From 00318a6b5e8e76d8d1f815746c6a655cb777178c Mon Sep 17 00:00:00 2001 From: mykola2312 <49044616+mykola2312@users.noreply.github.com> Date: Fri, 29 Mar 2019 00:27:42 +0200 Subject: [PATCH] =?UTF-8?q?=D0=9B=D0=B5=D0=BD=D0=BE=D1=87=D0=BA=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .bochsrc | 1265 + Makefile | 124 + bdf2bin | Bin 0 -> 20272 bytes bdf2bin.c | 95 + bochsout.txt | 226 + boot/grub/grub.cfg | 8 + build.sh | 2 + bx_enh_dbg.ini | 26 + export.sh | 2 + font.bin | Bin 0 -> 52190 bytes kernel/ahci.c | 276 + kernel/ahci.h | 326 + kernel/bmp.c | 51 + kernel/bmp.h | 8 + kernel/defines.h | 10 + kernel/disk.c | 137 + kernel/disk.h | 50 + kernel/exceptions.c | 141 + kernel/exceptions.h | 9 + kernel/fat.c | 331 + kernel/fat.h | 102 + kernel/file.c | 86 + kernel/file.h | 9 + kernel/heap.c | 194 + kernel/heap.h | 12 + kernel/idt.c | 91 + kernel/idt.h | 17 + kernel/io.h | 21 + kernel/keyboard.c | 174 + kernel/keyboard.h | 52 + kernel/kmain.c | 250 + kernel/lvalloc.c | 38 + kernel/lvalloc.h | 15 + kernel/multiboot.c | 36 + kernel/multiboot.h | 61 + kernel/os.h | 133 + kernel/paging.c | 131 + kernel/paging.h | 14 + kernel/pci.c | 251 + kernel/pci.h | 24 + kernel/pic.c | 45 + kernel/pic.h | 16 + kernel/pit.c | 36 + kernel/pit.h | 10 + kernel/start.asm | 17 + kernel/stdlib.c | 444 + kernel/stdlib.h | 45 + kernel/string.c | 142 + kernel/string.h | 31 + kernel/va_list.asm | 41 + kernel/va_list.h | 13 + kernel/vga_terminal.c | 175 + kernel/vga_terminal.h | 68 + kernel/video.c | 140 + kernel/video.h | 16 + kernel/x64font.asm | 12 + kernel/x64idt.asm | 18 + kernel/x64ints.asm | 89 + kernel/x64io.asm | 80 + kernel/x64stdlib.asm | 56 + kernel/x64utils.asm | 10 + kernel_old/ahci.c | 169 + kernel_old/ahci.h | 315 + kernel_old/ata_pio.c | 122 + kernel_old/ata_pio.h | 59 + kernel_old/exceptions.c | 138 + kernel_old/exceptions.h | 9 + kernel_old/gdt.c | 39 + kernel_old/gdt.h | 29 + kernel_old/idt.c | 72 + kernel_old/idt.h | 60 + kernel_old/io.h | 21 + kernel_old/keyboard.c | 151 + kernel_old/keyboard.h | 50 + kernel_old/kmain.c | 142 + kernel_old/memory.c | 36 + kernel_old/memory.h | 25 + kernel_old/multiboot.asm | 101 + kernel_old/multiboot.h | 58 + kernel_old/os.h | 36 + kernel_old/paging.c | 93 + kernel_old/paging.h | 37 + kernel_old/pci.c | 251 + kernel_old/pci.h | 24 + kernel_old/pic.c | 45 + kernel_old/pic.h | 16 + kernel_old/pit.c | 36 + kernel_old/pit.h | 10 + kernel_old/stdlib.c | 398 + kernel_old/stdlib.h | 44 + kernel_old/string.c | 49 + kernel_old/string.h | 16 + kernel_old/termio.c | 175 + kernel_old/termio.h | 7 + kernel_old/termlib.c | 201 + kernel_old/termlib.h | 7 + kernel_old/vga_terminal.c | 107 + kernel_old/vga_terminal.h | 67 + kernel_old/x86_utils.c | 37 + kernel_old/x86gdt.asm | 36 + kernel_old/x86idt.asm | 23 + kernel_old/x86int.asm | 483 + kernel_old/x86io.asm | 112 + kernel_old/x86stdlib.asm | 124 + kernel_old/x86utils.asm | 96 + kernel_old/x86utils.h | 41 + kmap.txt | 437 + kobj/ahci.o | Bin 0 -> 6280 bytes kobj/bmp.o | Bin 0 -> 2144 bytes kobj/disk.o | Bin 0 -> 7368 bytes kobj/exceptions.o | Bin 0 -> 5728 bytes kobj/fat.o | Bin 0 -> 7000 bytes kobj/file.o | Bin 0 -> 3024 bytes kobj/heap.o | Bin 0 -> 5016 bytes kobj/idt.o | Bin 0 -> 4960 bytes kobj/keyboard.o | Bin 0 -> 5280 bytes kobj/kmain.o | Bin 0 -> 10120 bytes kobj/lvalloc.o | Bin 0 -> 2560 bytes kobj/multiboot.o | Bin 0 -> 2296 bytes kobj/paging.o | Bin 0 -> 2888 bytes kobj/pci.o | Bin 0 -> 9360 bytes kobj/pic.o | Bin 0 -> 2192 bytes kobj/pit.o | Bin 0 -> 2112 bytes kobj/start.o | Bin 0 -> 880 bytes kobj/stdlib.o | Bin 0 -> 10944 bytes kobj/string.o | Bin 0 -> 4456 bytes kobj/va_list.o | Bin 0 -> 704 bytes kobj/vga_terminal.o | Bin 0 -> 7016 bytes kobj/video.o | Bin 0 -> 6328 bytes kobj/x64font.o | Bin 0 -> 53008 bytes kobj/x64idt.o | Bin 0 -> 976 bytes kobj/x64ints.o | Bin 0 -> 4528 bytes kobj/x64io.o | Bin 0 -> 928 bytes kobj/x64stdlib.o | Bin 0 -> 912 bytes kobj/x64utils.o | Bin 0 -> 624 bytes lenochka.ld | 29 + lenochka/.gitattributes | 2 + lenochka/LICENSE | 674 + lenochka/README.md | 1 + lmap.txt | 254 + loader.ld | 28 + loader.sh | 2 + loader/elf64.h | 46 + loader/exceptions.c | 135 + loader/exceptions.h | 9 + loader/gdt.c | 39 + loader/gdt.h | 30 + loader/idt.c | 72 + loader/idt.h | 60 + loader/io.h | 21 + loader/lmain.c | 311 + loader/loader.asm | 43 + loader/memory.c | 36 + loader/memory.h | 25 + loader/multiboot.h | 66 + loader/os.h | 36 + loader/stdlib.c | 419 + loader/stdlib.h | 44 + loader/string.c | 49 + loader/string.h | 16 + loader/vga_terminal.c | 107 + loader/vga_terminal.h | 67 + loader/x86debug.asm | 12 + loader/x86enter64.asm | 75 + loader/x86gdt.asm | 36 + loader/x86idt.asm | 23 + loader/x86int.asm | 483 + loader/x86io.asm | 112 + loader/x86stdlib.asm | 124 + lobj/exceptions.o | Bin 0 -> 3936 bytes lobj/gdt.o | Bin 0 -> 1488 bytes lobj/idt.o | Bin 0 -> 2076 bytes lobj/lmain.o | Bin 0 -> 5828 bytes lobj/loader.o | Bin 0 -> 1040 bytes lobj/memory.o | Bin 0 -> 1280 bytes lobj/stdlib.o | Bin 0 -> 6056 bytes lobj/string.o | Bin 0 -> 1476 bytes lobj/vga_terminal.o | Bin 0 -> 2648 bytes lobj/x86enter64.o | Bin 0 -> 4896 bytes lobj/x86gdt.o | Bin 0 -> 752 bytes lobj/x86idt.o | Bin 0 -> 688 bytes lobj/x86int.o | Bin 0 -> 3520 bytes lobj/x86io.o | Bin 0 -> 736 bytes lobj/x86stdlib.o | Bin 0 -> 992 bytes logo.bmp | Bin 0 -> 256122 bytes logo.png | Bin 0 -> 139224 bytes logo.xcf | Bin 0 -> 391920 bytes map.txt | 335 + memory_map.txt | 3 + os/grub2.cfg | 7 + os/lenochka.elf | Bin 0 -> 114640 bytes os/loader.elf | Bin 0 -> 35372 bytes u_vga16.bdf | 66709 ++++++++++++++++++++++++++++++++++++ 193 files changed, 81446 insertions(+) create mode 100644 .bochsrc create mode 100644 Makefile create mode 100644 bdf2bin create mode 100644 bdf2bin.c create mode 100644 bochsout.txt create mode 100644 boot/grub/grub.cfg create mode 100644 build.sh create mode 100644 bx_enh_dbg.ini create mode 100644 export.sh create mode 100644 font.bin create mode 100644 kernel/ahci.c create mode 100644 kernel/ahci.h create mode 100644 kernel/bmp.c create mode 100644 kernel/bmp.h create mode 100644 kernel/defines.h create mode 100644 kernel/disk.c create mode 100644 kernel/disk.h create mode 100644 kernel/exceptions.c create mode 100644 kernel/exceptions.h create mode 100644 kernel/fat.c create mode 100644 kernel/fat.h create mode 100644 kernel/file.c create mode 100644 kernel/file.h create mode 100644 kernel/heap.c create mode 100644 kernel/heap.h create mode 100644 kernel/idt.c create mode 100644 kernel/idt.h create mode 100644 kernel/io.h create mode 100644 kernel/keyboard.c create mode 100644 kernel/keyboard.h create mode 100644 kernel/kmain.c create mode 100644 kernel/lvalloc.c create mode 100644 kernel/lvalloc.h create mode 100644 kernel/multiboot.c create mode 100644 kernel/multiboot.h create mode 100644 kernel/os.h create mode 100644 kernel/paging.c create mode 100644 kernel/paging.h create mode 100644 kernel/pci.c create mode 100644 kernel/pci.h create mode 100644 kernel/pic.c create mode 100644 kernel/pic.h create mode 100644 kernel/pit.c create mode 100644 kernel/pit.h create mode 100644 kernel/start.asm create mode 100644 kernel/stdlib.c create mode 100644 kernel/stdlib.h create mode 100644 kernel/string.c create mode 100644 kernel/string.h create mode 100644 kernel/va_list.asm create mode 100644 kernel/va_list.h create mode 100644 kernel/vga_terminal.c create mode 100644 kernel/vga_terminal.h create mode 100644 kernel/video.c create mode 100644 kernel/video.h create mode 100644 kernel/x64font.asm create mode 100644 kernel/x64idt.asm create mode 100644 kernel/x64ints.asm create mode 100644 kernel/x64io.asm create mode 100644 kernel/x64stdlib.asm create mode 100644 kernel/x64utils.asm create mode 100644 kernel_old/ahci.c create mode 100644 kernel_old/ahci.h create mode 100644 kernel_old/ata_pio.c create mode 100644 kernel_old/ata_pio.h create mode 100644 kernel_old/exceptions.c create mode 100644 kernel_old/exceptions.h create mode 100644 kernel_old/gdt.c create mode 100644 kernel_old/gdt.h create mode 100644 kernel_old/idt.c create mode 100644 kernel_old/idt.h create mode 100644 kernel_old/io.h create mode 100644 kernel_old/keyboard.c create mode 100644 kernel_old/keyboard.h create mode 100644 kernel_old/kmain.c create mode 100644 kernel_old/memory.c create mode 100644 kernel_old/memory.h create mode 100644 kernel_old/multiboot.asm create mode 100644 kernel_old/multiboot.h create mode 100644 kernel_old/os.h create mode 100644 kernel_old/paging.c create mode 100644 kernel_old/paging.h create mode 100644 kernel_old/pci.c create mode 100644 kernel_old/pci.h create mode 100644 kernel_old/pic.c create mode 100644 kernel_old/pic.h create mode 100644 kernel_old/pit.c create mode 100644 kernel_old/pit.h create mode 100644 kernel_old/stdlib.c create mode 100644 kernel_old/stdlib.h create mode 100644 kernel_old/string.c create mode 100644 kernel_old/string.h create mode 100644 kernel_old/termio.c create mode 100644 kernel_old/termio.h create mode 100644 kernel_old/termlib.c create mode 100644 kernel_old/termlib.h create mode 100644 kernel_old/vga_terminal.c create mode 100644 kernel_old/vga_terminal.h create mode 100644 kernel_old/x86_utils.c create mode 100644 kernel_old/x86gdt.asm create mode 100644 kernel_old/x86idt.asm create mode 100644 kernel_old/x86int.asm create mode 100644 kernel_old/x86io.asm create mode 100644 kernel_old/x86stdlib.asm create mode 100644 kernel_old/x86utils.asm create mode 100644 kernel_old/x86utils.h create mode 100644 kmap.txt create mode 100644 kobj/ahci.o create mode 100644 kobj/bmp.o create mode 100644 kobj/disk.o create mode 100644 kobj/exceptions.o create mode 100644 kobj/fat.o create mode 100644 kobj/file.o create mode 100644 kobj/heap.o create mode 100644 kobj/idt.o create mode 100644 kobj/keyboard.o create mode 100644 kobj/kmain.o create mode 100644 kobj/lvalloc.o create mode 100644 kobj/multiboot.o create mode 100644 kobj/paging.o create mode 100644 kobj/pci.o create mode 100644 kobj/pic.o create mode 100644 kobj/pit.o create mode 100644 kobj/start.o create mode 100644 kobj/stdlib.o create mode 100644 kobj/string.o create mode 100644 kobj/va_list.o create mode 100644 kobj/vga_terminal.o create mode 100644 kobj/video.o create mode 100644 kobj/x64font.o create mode 100644 kobj/x64idt.o create mode 100644 kobj/x64ints.o create mode 100644 kobj/x64io.o create mode 100644 kobj/x64stdlib.o create mode 100644 kobj/x64utils.o create mode 100644 lenochka.ld create mode 100644 lenochka/.gitattributes create mode 100644 lenochka/LICENSE create mode 100644 lenochka/README.md create mode 100644 lmap.txt create mode 100644 loader.ld create mode 100644 loader.sh create mode 100644 loader/elf64.h create mode 100644 loader/exceptions.c create mode 100644 loader/exceptions.h create mode 100644 loader/gdt.c create mode 100644 loader/gdt.h create mode 100644 loader/idt.c create mode 100644 loader/idt.h create mode 100644 loader/io.h create mode 100644 loader/lmain.c create mode 100644 loader/loader.asm create mode 100644 loader/memory.c create mode 100644 loader/memory.h create mode 100644 loader/multiboot.h create mode 100644 loader/os.h create mode 100644 loader/stdlib.c create mode 100644 loader/stdlib.h create mode 100644 loader/string.c create mode 100644 loader/string.h create mode 100644 loader/vga_terminal.c create mode 100644 loader/vga_terminal.h create mode 100644 loader/x86debug.asm create mode 100644 loader/x86enter64.asm create mode 100644 loader/x86gdt.asm create mode 100644 loader/x86idt.asm create mode 100644 loader/x86int.asm create mode 100644 loader/x86io.asm create mode 100644 loader/x86stdlib.asm create mode 100644 lobj/exceptions.o create mode 100644 lobj/gdt.o create mode 100644 lobj/idt.o create mode 100644 lobj/lmain.o create mode 100644 lobj/loader.o create mode 100644 lobj/memory.o create mode 100644 lobj/stdlib.o create mode 100644 lobj/string.o create mode 100644 lobj/vga_terminal.o create mode 100644 lobj/x86enter64.o create mode 100644 lobj/x86gdt.o create mode 100644 lobj/x86idt.o create mode 100644 lobj/x86int.o create mode 100644 lobj/x86io.o create mode 100644 lobj/x86stdlib.o create mode 100644 logo.bmp create mode 100644 logo.png create mode 100644 logo.xcf create mode 100644 map.txt create mode 100644 memory_map.txt create mode 100644 os/grub2.cfg create mode 100644 os/lenochka.elf create mode 100644 os/loader.elf create mode 100644 u_vga16.bdf diff --git a/.bochsrc b/.bochsrc new file mode 100644 index 0000000..2b5f03e --- /dev/null +++ b/.bochsrc @@ -0,0 +1,1265 @@ +# You may now use double quotes around pathnames, in case +# your pathname includes spaces. + +#======================================================================= +# PLUGIN_CTRL: +# Controls the presence of optional device plugins. These plugins are loaded +# directly with this option and some of them install a config option that is +# only available when the plugin device is loaded. The value "1" means to load +# the plugin and "0" will unload it (if loaded before). +# +# These plugins will be loaded by default (if present): 'biosdev', 'extfpuirq', +# 'gameport', 'iodebug','parallel', 'serial', 'speaker' and 'unmapped'. +# +# These plugins are also supported, but they are usually loaded directly with +# their bochsrc option: 'e1000', 'es1370', 'ne2k', 'pcidev', 'pcipnic', 'sb16', +# 'usb_ehci', 'usb_ohci', 'usb_uhci', 'usb_xhci' and 'voodoo'. +#======================================================================= +#plugin_ctrl: unmapped=0, e1000=1 # unload 'unmapped' and load 'e1000' + +#======================================================================= +# CONFIG_INTERFACE +# +# The configuration interface is a series of menus or dialog boxes that +# allows you to change all the settings that control Bochs's behavior. +# Depending on the platform there are up to 3 choices of configuration +# interface: a text mode version called "textconfig" and two graphical versions +# called "win32config" and "wx". The text mode version uses stdin/stdout and +# is always compiled in, unless Bochs is compiled for wx only. The choice +# "win32config" is only available on win32 and it is the default there. +# The choice "wx" is only available when you use "--with-wx" on the configure +# command. If you do not write a config_interface line, Bochs will +# choose a default for you. +# +# NOTE: if you use the "wx" configuration interface, you must also use +# the "wx" display library. +#======================================================================= +#config_interface: textconfig +#config_interface: win32config +#config_interface: wx + +#======================================================================= +# DISPLAY_LIBRARY +# +# The display library is the code that displays the Bochs VGA screen. Bochs +# has a selection of about 10 different display library implementations for +# different platforms. If you run configure with multiple --with-* options, +# the display_library command lets you choose which one you want to run with. +# If you do not write a display_library line, Bochs will choose a default for +# you. +# +# The choices are: +# x use X windows interface, cross platform +# win32 use native win32 libraries +# carbon use Carbon library (for MacOS X) +# macintosh use MacOS pre-10 +# amigaos use native AmigaOS libraries +# sdl use SDL 1.2.x library, cross platform +# sdl2 use SDL 2.x library, cross platform +# svga use SVGALIB library for Linux, allows graphics without X11 +# term text only, uses curses/ncurses library, cross platform +# rfb provides an interface to AT&T's VNC viewer, cross platform +# vncsrv use LibVNCServer for extended RFB(VNC) support +# wx use wxWidgets library, cross platform +# nogui no display at all +# +# NOTE: if you use the "wx" configuration interface, you must also use +# the "wx" display library. +# +# Specific options: +# Some display libraries now support specific options to control their +# behaviour. These options are supported by more than one display library: +# +# "gui_debug" - use GTK debugger gui (sdl, sdl2, x) / Win32 debugger gui (sdl, +# sdl2, win32) +# "hideIPS" - disable IPS output in status bar (rfb, sdl, sdl2, vncsrv, +# win32, wx, x) +# "nokeyrepeat" - turn off host keyboard repeat (sdl, sdl2, win32, x) +# "timeout" - time (in seconds) to wait for client (rfb, vncsrv) +# +# See the examples below for other currently supported options. +#======================================================================= +#display_library: amigaos +#display_library: carbon +#display_library: macintosh +#display_library: nogui +#display_library: rfb +#display_library: sdl, options="fullscreen" # startup in fullscreen mode +#display_library: sdl2, options="fullscreen" # startup in fullscreen mode +#display_library: term +#display_library: vncsrv +#display_library: win32 +#display_library: wx +#display_library: x +display_library: x, options="gui_debug" + +#======================================================================= +# CPU: +# This defines cpu-related parameters inside Bochs: +# +# MODEL: +# Selects CPU configuration to emulate from pre-defined list of all +# supported configurations. When this option is used and the value +# is different from 'bx_generic', the parameters of the CPUID option +# have no effect anymore. +# +# CPU configurations that can be selected: +# ----------------------------------------------------------------- +# pentium Intel Pentium (P54C) +# pentium_mmx Intel Pentium MMX +# amd_k6_2_chomper AMD-K6(tm) 3D processor (Chomper) +# p2_klamath Intel Pentium II (Klamath) +# p3_katmai Intel Pentium III (Katmai) +# p4_willamette Intel(R) Pentium(R) 4 (Willamette) +# core_duo_t2400_yonah Intel(R) Core(TM) Duo CPU T2400 (Yonah) +# atom_n270 Intel(R) Atom(TM) CPU N270 +# p4_prescott_celeron_336 Intel(R) Celeron(R) 336 (Prescott) +# athlon64_clawhammer AMD Athlon(tm) 64 Processor 2800+ (Clawhammer) +# athlon64_venice AMD Athlon(tm) 64 Processor 3000+ (Venice) +# turion64_tyler AMD Turion(tm) 64 X2 Mobile TL-60 (Tyler) +# phenom_8650_toliman AMD Phenom X3 8650 (Toliman) +# core2_penryn_t9600 Intel Mobile Core 2 Duo T9600 (Penryn) +# corei5_lynnfield_750 Intel(R) Core(TM) i5 750 (Lynnfield) +# corei5_arrandale_m520 Intel(R) Core(TM) i5 M 520 (Arrandale) +# corei7_sandy_bridge_2600k Intel(R) Core(TM) i7-2600K (Sandy Bridge) +# zambezi AMD FX(tm)-4100 Quad-Core Processor (Zambezi) +# trinity_apu AMD A8-5600K APU (Trinity) +# ryzen AMD Ryzen 7 1700 +# corei7_ivy_bridge_3770k Intel(R) Core(TM) i7-3770K CPU (Ivy Bridge) +# corei7_haswell_4770 Intel(R) Core(TM) i7-4770 CPU (Haswell) +# broadwell_ult Intel(R) Processor 5Y70 CPU (Broadwell) +# +# COUNT: +# Set the number of processors:cores per processor:threads per core when +# Bochs is compiled for SMP emulation. Bochs currently supports up to +# 14 threads (legacy APIC) or 254 threads (xAPIC or higher) running +# simultaniosly. If Bochs is compiled without SMP support, it won't accept +# values different from 1. +# +# QUANTUM: +# Maximum amount of instructions allowed to execute by processor before +# returning control to another cpu. This option exists only in Bochs +# binary compiled with SMP support. +# +# RESET_ON_TRIPLE_FAULT: +# Reset the CPU when triple fault occur (highly recommended) rather than +# PANIC. Remember that if you trying to continue after triple fault the +# simulation will be completely bogus ! +# +# CPUID_LIMIT_WINNT: +# Determine whether to limit maximum CPUID function to 2. This mode is +# required to workaround WinNT installation and boot issues. +# +# MSRS: +# Define path to user CPU Model Specific Registers (MSRs) specification. +# See example in msrs.def. +# +# IGNORE_BAD_MSRS: +# Ignore MSR references that Bochs does not understand; print a warning +# message instead of generating #GP exception. This option is enabled +# by default but will not be avaiable if configurable MSRs are enabled. +# +# MWAIT_IS_NOP: +# When this option is enabled MWAIT will not put the CPU into a sleep state. +# This option exists only if Bochs compiled with --enable-monitor-mwait. +# +# IPS: +# Emulated Instructions Per Second. This is the number of IPS that bochs +# is capable of running on your machine. You can recompile Bochs with +# --enable-show-ips option enabled, to find your host's capability. +# Measured IPS value will then be logged into your log file or shown +# in the status bar (if supported by the gui). +# +# IPS is used to calibrate many time-dependent events within the bochs +# simulation. For example, changing IPS affects the frequency of VGA +# updates, the duration of time before a key starts to autorepeat, and +# the measurement of BogoMips and other benchmarks. +# +# Examples: +# +# Bochs Machine/Compiler Mips +# ______________________________________________________________________ +# 2.4.6 3.4Ghz Intel Core i7 2600 with Win7x64/g++ 4.5.2 85 to 95 Mips +# 2.3.7 3.2Ghz Intel Core 2 Q9770 with WinXP/g++ 3.4 50 to 55 Mips +# 2.3.7 2.6Ghz Intel Core 2 Duo with WinXP/g++ 3.4 38 to 43 Mips +# 2.2.6 2.6Ghz Intel Core 2 Duo with WinXP/g++ 3.4 21 to 25 Mips +# 2.2.6 2.1Ghz Athlon XP with Linux 2.6/g++ 3.4 12 to 15 Mips +#======================================================================= +cpu: model=core2_penryn_t9600, count=1, ips=50000000, reset_on_triple_fault=1, ignore_bad_msrs=1, msrs="msrs.def" +cpu: cpuid_limit_winnt=0 + +#======================================================================= +# CPUID: +# +# This defines features and functionality supported by Bochs emulated CPU. +# The option has no offect if CPU model was selected in CPU option. +# +# MMX: +# Select MMX instruction set support. +# This option exists only if Bochs compiled with BX_CPU_LEVEL >= 5. +# +# APIC: +# Select APIC configuration (LEGACY/XAPIC/XAPIC_EXT/X2APIC). +# This option exists only if Bochs compiled with BX_CPU_LEVEL >= 5. +# +# SEP: +# Select SYSENTER/SYSEXIT instruction set support. +# This option exists only if Bochs compiled with BX_CPU_LEVEL >= 6. +# +# SIMD: +# Select SIMD instructions support. +# Any of NONE/SSE/SSE2/SSE3/SSSE3/SSE4_1/SSE4_2/AVX/AVX2/AVX512 +# could be selected. +# +# This option exists only if Bochs compiled with BX_CPU_LEVEL >= 6. +# The AVX choises exists only if Bochs compiled with --enable-avx option. +# +# SSE4A: +# Select AMD SSE4A instructions support. +# This option exists only if Bochs compiled with BX_CPU_LEVEL >= 6. +# +# MISALIGNED_SSE: +# Select AMD Misaligned SSE mode support. +# This option exists only if Bochs compiled with BX_CPU_LEVEL >= 6. +# +# AES: +# Select AES instruction set support. +# This option exists only if Bochs compiled with BX_CPU_LEVEL >= 6. +# +# SHA: +# Select SHA instruction set support. +# This option exists only if Bochs compiled with BX_CPU_LEVEL >= 6. +# +# MOVBE: +# Select MOVBE Intel(R) Atom instruction support. +# This option exists only if Bochs compiled with BX_CPU_LEVEL >= 6. +# +# ADX: +# Select ADCX/ADOX instructions support. +# This option exists only if Bochs compiled with BX_CPU_LEVEL >= 6. +# +# XSAVE: +# Select XSAVE extensions support. +# This option exists only if Bochs compiled with BX_CPU_LEVEL >= 6. +# +# XSAVEOPT: +# Select XSAVEOPT instruction support. +# This option exists only if Bochs compiled with BX_CPU_LEVEL >= 6. +# +# AVX_F16C: +# Select AVX float16 convert instructions support. +# This option exists only if Bochs compiled with --enable-avx option. +# +# AVX_FMA: +# Select AVX fused multiply add (FMA) instructions support. +# This option exists only if Bochs compiled with --enable-avx option. +# +# BMI: +# Select BMI1/BMI2 instructions support. +# This option exists only if Bochs compiled with --enable-avx option. +# +# XOP: +# Select AMD XOP instructions support. +# This option exists only if Bochs compiled with --enable-avx option. +# +# FMA4: +# Select AMD four operand FMA instructions support. +# This option exists only if Bochs compiled with --enable-avx option. +# +# TBM: +# Select AMD Trailing Bit Manipulation (TBM) instructions support. +# This option exists only if Bochs compiled with --enable-avx option. +# +# X86-64: +# Enable x86-64 and long mode support. +# This option exists only if Bochs compiled with x86-64 support. +# +# 1G_PAGES: +# Enable 1G page size support in long mode. +# This option exists only if Bochs compiled with x86-64 support. +# +# PCID: +# Enable Process-Context Identifiers (PCID) support in long mode. +# This option exists only if Bochs compiled with x86-64 support. +# +# FSGSBASE: +# Enable GS/GS BASE access instructions support in long mode. +# This option exists only if Bochs compiled with x86-64 support. +# +# SMEP: +# Enable Supervisor Mode Execution Protection (SMEP) support. +# This option exists only if Bochs compiled with BX_CPU_LEVEL >= 6. +# +# SMAP: +# Enable Supervisor Mode Access Prevention (SMAP) support. +# This option exists only if Bochs compiled with BX_CPU_LEVEL >= 6. +# +# MWAIT: +# Select MONITOR/MWAIT instructions support. +# This option exists only if Bochs compiled with --enable-monitor-mwait. +# +# VMX: +# Select VMX extensions emulation support. +# This option exists only if Bochs compiled with --enable-vmx option. +# +# SVM: +# Select AMD SVM (Secure Virtual Machine) extensions emulation support. +# This option exists only if Bochs compiled with --enable-svm option. +# +# VENDOR_STRING: +# Set the CPUID vendor string returned by CPUID(0x0). This should be a +# twelve-character ASCII string. +# +# BRAND_STRING: +# Set the CPUID vendor string returned by CPUID(0x80000002 .. 0x80000004). +# This should be at most a forty-eight-character ASCII string. +# +# LEVEL: +# Set emulated CPU level information returned by CPUID. Default value is +# determined by configure option --enable-cpu-level. Currently supported +# values are 5 (for Pentium and similar processors) and 6 (for P6 and +# later processors). +# +# FAMILY: +# Set model information returned by CPUID. Default family value determined +# by configure option --enable-cpu-level. +# +# MODEL: +# Set model information returned by CPUID. Default model value is 3. +# +# STEPPING: +# Set stepping information returned by CPUID. Default stepping value is 3. +#======================================================================= +#cpuid: x86_64=1, mmx=1, sep=1, simd=sse4_2, apic=xapic, aes=1, movbe=1, xsave=1 +#cpuid: family=6, model=0x1a, stepping=5 + +#======================================================================= +# MEMORY +# Set the amount of physical memory you want to emulate. +# +# GUEST: +# Set amount of guest physical memory to emulate. The default is 32MB, +# the maximum amount limited only by physical address space limitations. +# +# HOST: +# Set amount of host memory you want to allocate for guest RAM emulation. +# It is possible to allocate less memory than you want to emulate in guest +# system. This will fake guest to see the non-existing memory. Once guest +# system touches new memory block it will be dynamically taken from the +# memory pool. You will be warned (by FATAL PANIC) in case guest already +# used all allocated host memory and wants more. +# +#======================================================================= +memory: guest=512, host=256 + +#======================================================================= +# ROMIMAGE: +# The ROM BIOS controls what the PC does when it first powers on. +# Normally, you can use a precompiled BIOS in the source or binary +# distribution called BIOS-bochs-latest. The default ROM BIOS is usually loaded +# starting at address 0xfffe0000, and it is exactly 128k long. The legacy +# version of the Bochs BIOS is usually loaded starting at address 0xffff0000, +# and it is exactly 64k long. +# You can use the environment variable $BXSHARE to specify the location +# of the BIOS. +# The usage of external large BIOS images (up to 512k) at memory top is +# now supported, but we still recommend to use the BIOS distributed with Bochs. +# The start address is optional, since it can be calculated from image size. +# The Bochs BIOS currently supports only the option "fastboot" to skip the +# boot menu delay. +#======================================================================= +romimage: file=$BXSHARE/BIOS-bochs-latest, options=fastboot +#romimage: file=$BXSHARE/bios.bin-1.7.5 # http://www.seabios.org/SeaBIOS +#romimage: file=mybios.bin, address=0xfff80000 # 512k at memory top + +#======================================================================= +# VGAROMIMAGE +# You now need to load a VGA ROM BIOS into C0000. +#======================================================================= +#vgaromimage: file=bios/VGABIOS-elpin-2.40 +vgaromimage: file=$BXSHARE/VGABIOS-lgpl-latest +#vgaromimage: file=bios/VGABIOS-lgpl-latest-cirrus + +#======================================================================= +# OPTROMIMAGE[1-4]: +# You may now load up to 4 optional ROM images. Be sure to use a +# read-only area, typically between C8000 and EFFFF. These optional +# ROM images should not overwrite the rombios (located at +# F0000-FFFFF) and the videobios (located at C0000-C7FFF). +# Those ROM images will be initialized by the bios if they contain +# the right signature (0x55AA) and a valid checksum. +# It can also be a convenient way to upload some arbitrary code/data +# in the simulation, that can be retrieved by the boot loader +#======================================================================= +#optromimage1: file=optionalrom.bin, address=0xd0000 +#optromimage2: file=optionalrom.bin, address=0xd1000 +#optromimage3: file=optionalrom.bin, address=0xd2000 +#optromimage4: file=optionalrom.bin, address=0xd3000 + +#optramimage1: file=/path/file1.img, address=0x0010000 +#optramimage2: file=/path/file2.img, address=0x0020000 +#optramimage3: file=/path/file3.img, address=0x0030000 +#optramimage4: file=/path/file4.img, address=0x0040000 + +#======================================================================= +# VGA: +# This defines parameters related to the VGA display +# +# EXTENSION +# Here you can specify the display extension to be used. With the value +# 'none' you can use standard VGA with no extension. Other supported +# values are 'vbe' for Bochs VBE and 'cirrus' for Cirrus SVGA support. +# +# UPDATE_FREQ +# This parameter specifies the number of display updates per second. +# The VGA update timer now uses the realtime engine and the default +# value is 5. This parameter can be changed at runtime. +# +# REALTIME +# If set to 1, the VGA timer is based on realtime, otherwise it is based +# on the ips setting. If the host is slow (low ips, update_freq) and the +# guest uses HLT appropriately, setting this to 0 and "clock: sync=none" +# may improve the responsiveness of the guest GUI when the guest is +# otherwise idle. The default value is 1. +# +# Examples: +# vga: extension=cirrus, update_freq=10 +#======================================================================= +#vga: extension=vbe, update_freq=5, realtime=1 + +#======================================================================= +# VOODOO: +# This defines the Voodoo Graphics emulation (experimental). Currently +# supported models are 'voodoo1' and 'voodoo2'. The Voodoo2 support is +# not yet complete. +# +# Examples: +# voodoo: enabled=1, model=voodoo1 +#======================================================================= +#voodoo: enabled=1, model=voodoo1 + +#======================================================================= +# KEYBOARD: +# This defines parameters related to the emulated keyboard +# +# TYPE: +# Type of keyboard return by a "identify keyboard" command to the +# keyboard controller. It must be one of "xt", "at" or "mf". +# Defaults to "mf". It should be ok for almost everybody. A known +# exception is french macs, that do have a "at"-like keyboard. +# +# SERIAL_DELAY: +# Approximate time in microseconds that it takes one character to +# be transferred from the keyboard to controller over the serial path. +# +# PASTE_DELAY: +# Approximate time in microseconds between attempts to paste +# characters to the keyboard controller. This leaves time for the +# guest os to deal with the flow of characters. The ideal setting +# depends on how your operating system processes characters. The +# default of 100000 usec (.1 seconds) was chosen because it works +# consistently in Windows. +# If your OS is losing characters during a paste, increase the paste +# delay until it stops losing characters. +# +# KEYMAP: +# This enables a remap of a physical localized keyboard to a +# virtualized us keyboard, as the PC architecture expects. +# +# USER_SHORTCUT: +# This defines the keyboard shortcut to be sent when you press the "user" +# button in the headerbar. The shortcut string is a combination of maximum +# 3 key names (listed below) separated with a '-' character. +# Valid key names: +# "alt", "bksl", "bksp", "ctrl", "del", "down", "end", "enter", "esc", +# "f1", ... "f12", "home", "ins", "left", "menu", "minus", "pgdwn", "pgup", +# "plus", "power", "print", "right", "scrlck", "shift", "space", "tab", "up" +# and "win". + +# Examples: +# keyboard: type=mf, serial_delay=200, paste_delay=100000 +# keyboard: keymap=gui/keymaps/x11-pc-de.map +# keyboard: user_shortcut=ctrl-alt-del +#======================================================================= +#keyboard: type=mf, serial_delay=250 + +#======================================================================= +# MOUSE: +# This defines parameters for the emulated mouse type, the initial status +# of the mouse capture and the runtime method to toggle it. +# +# TYPE: +# With the mouse type option you can select the type of mouse to emulate. +# The default value is 'ps2'. The other choices are 'imps2' (wheel mouse +# on PS/2), 'serial', 'serial_wheel', 'serial_msys' (one com port requires +# setting 'mode=mouse') 'inport' and 'bus' (if present). To connect a mouse +# to a USB port, see the 'usb_uhci', 'usb_ohci', 'usb_ehci' or 'usb_xhci' +# options (requires PCI and USB support). +# +# ENABLED: +# The Bochs gui creates mouse "events" unless the 'enabled' option is +# set to 0. The hardware emulation itself is not disabled by this. +# Unless you have a particular reason for enabling the mouse by default, +# it is recommended that you leave it off. You can also toggle the mouse +# usage at runtime (RFB, SDL, Win32, wxWidgets and X11 - see below). +# +# TOGGLE: +# The default method to toggle the mouse capture at runtime is to press the +# CTRL key and the middle mouse button ('ctrl+mbutton'). This option allows +# to change the method to 'ctrl+f10' (like DOSBox), 'ctrl+alt' (like QEMU) +# or 'f12'. +# +# Examples: +# mouse: enabled=1 +# mouse: type=imps2, enabled=1 +# mouse: type=serial, enabled=1 +# mouse: enabled=0, toggle=ctrl+f10 +#======================================================================= +mouse: enabled=0 + +#======================================================================= +# PCI: +# This option controls the presence of a PCI chipset in Bochs. Currently it only +# supports the i430FX and i440FX chipsets. You can also specify the devices +# connected to PCI slots. Up to 5 slots are available. For these combined PCI/ISA +# devices assigning to slot is mandatory if you want to emulate the PCI model: +# cirrus, ne2k and pcivga. These PCI-only devices are also supported, but they +# are auto-assigned if you don't use the slot configuration: e1000, es1370, +# pcidev, pcipnic, usb_ehci, usb_ohci, usb_xhci and voodoo. +# +# Example: +# pci: enabled=1, chipset=i440fx, slot1=pcivga, slot2=ne2k +#======================================================================= +pci: enabled=1, chipset=i440fx + +#======================================================================= +# CLOCK: +# This defines the parameters of the clock inside Bochs: +# +# SYNC: +# This defines the method how to synchronize the Bochs internal time +# with realtime. With the value 'none' the Bochs time relies on the IPS +# value and no host time synchronization is used. The 'slowdown' method +# sacrifices performance to preserve reproducibility while allowing host +# time correlation. The 'realtime' method sacrifices reproducibility to +# preserve performance and host-time correlation. +# It is possible to enable both synchronization methods. +# +# RTC_SYNC: +# If this option is enabled together with the realtime synchronization, +# the RTC runs at realtime speed. This feature is disabled by default. +# +# TIME0: +# Specifies the start (boot) time of the virtual machine. Use a time +# value as returned by the time(2) system call or a string as returned +# by the ctime(3) system call. If no time0 value is set or if time0 +# equal to 1 (special case) or if time0 equal 'local', the simulation +# will be started at the current local host time. If time0 equal to 2 +# (special case) or if time0 equal 'utc', the simulation will be started +# at the current utc time. +# +# Syntax: +# clock: sync=[none|slowdown|realtime|both], time0=[timeValue|local|utc] +# +# Example: +# clock: sync=none, time0=local # Now (localtime) +# clock: sync=slowdown, time0=315529200 # Tue Jan 1 00:00:00 1980 +# clock: sync=none, time0="Mon Jan 1 00:00:00 1990" # 631148400 +# clock: sync=realtime, time0=938581955 # Wed Sep 29 07:12:35 1999 +# clock: sync=realtime, time0="Sat Jan 1 00:00:00 2000" # 946681200 +# clock: sync=none, time0=1 # Now (localtime) +# clock: sync=none, time0=utc # Now (utc/gmt) +# +# Default value are sync=none, rtc_sync=0, time0=local +#======================================================================= +#clock: sync=none, time0=local +clock: sync=slowdown + +#======================================================================= +# CMOSIMAGE: +# This defines a binary image file with size 128 bytes that can be loaded into +# the CMOS RAM at startup. The rtc_init parameter controls whether initialize +# the RTC with values stored in the image. By default the time0 argument given +# to the clock option is used. With 'rtc_init=image' the image is the source +# for the initial time. +# +# Example: +# cmosimage: file=cmos.img, rtc_init=image +#======================================================================= +#cmosimage: file=cmos.img, rtc_init=time0 + +#======================================================================= +# private_colormap: Request that the GUI create and use it's own +# non-shared colormap. This colormap will be used +# when in the bochs window. If not enabled, a +# shared colormap scheme may be used. Not implemented +# on all GUI's. +# +# Examples: +# private_colormap: enabled=1 +# private_colormap: enabled=0 +#======================================================================= +private_colormap: enabled=0 + +#======================================================================= +# FLOPPYA: +# Point this to pathname of floppy image file or device +# This should be of a bootable floppy(image/device) if you're +# booting from 'a' (or 'floppy'). +# +# You can set the initial status of the media to 'ejected' or 'inserted'. +# floppya: 2_88=path, status=ejected (2.88M 3.5" media) +# floppya: 1_44=path, status=inserted (1.44M 3.5" media) +# floppya: 1_2=path, status=ejected (1.2M 5.25" media) +# floppya: 720k=path, status=inserted (720K 3.5" media) +# floppya: 360k=path, status=inserted (360K 5.25" media) +# floppya: 320k=path, status=inserted (320K 5.25" media) +# floppya: 180k=path, status=inserted (180K 5.25" media) +# floppya: 160k=path, status=inserted (160K 5.25" media) +# floppya: image=path, status=inserted (guess media type from image size) +# floppya: 1_44=vvfat:path, status=inserted (use directory as VFAT media) +# floppya: type=1_44 (1.44M 3.5" floppy drive, no media) +# +# The path should be the name of a disk image file. On Unix, you can use a raw +# device name such as /dev/fd0 on Linux. On win32 platforms, use drive letters +# such as a: or b: as the path. The parameter 'image' works with image files +# only. In that case the size must match one of the supported types. +# The parameter 'type' can be used to enable the floppy drive without media +# and status specified. Usually the drive type is set up based on the media type. +# The optional parameter 'write_protected' can be used to control the media +# write protect switch. By default it is turned off. +#======================================================================= +#floppya: 1_44=demo.img, status=inserted +#floppya: image=../1.44, status=inserted +#floppya: 1_44=/dev/fd0H1440, status=inserted +#floppya: 1_2=../1_2, status=inserted +#floppya: 1_44=a:, status=inserted +#floppya: 1_44=a.img, status=inserted, write_protected=1 +#floppya: 1_44=/dev/rfd0a, status=inserted + +#======================================================================= +# FLOPPYB: +# See FLOPPYA above for syntax +#======================================================================= +#floppyb: 1_44=b:, status=inserted +#floppyb: 1_44=b.img, status=inserted + +#======================================================================= +# ATA0, ATA1, ATA2, ATA3 +# ATA controller for hard disks and cdroms +# +# ata[0-3]: enabled=[0|1], ioaddr1=addr, ioaddr2=addr, irq=number +# +# These options enables up to 4 ata channels. For each channel +# the two base io addresses and the irq must be specified. +# +# ata0 and ata1 are enabled by default with the values shown below +# +# Examples: +# ata0: enabled=1, ioaddr1=0x1f0, ioaddr2=0x3f0, irq=14 +# ata1: enabled=1, ioaddr1=0x170, ioaddr2=0x370, irq=15 +# ata2: enabled=1, ioaddr1=0x1e8, ioaddr2=0x3e0, irq=11 +# ata3: enabled=1, ioaddr1=0x168, ioaddr2=0x360, irq=9 +#======================================================================= +ata0: enabled=1, ioaddr1=0x1f0, ioaddr2=0x3f0, irq=14 +ata1: enabled=1, ioaddr1=0x170, ioaddr2=0x370, irq=15 +ata2: enabled=0, ioaddr1=0x1e8, ioaddr2=0x3e0, irq=11 +ata3: enabled=0, ioaddr1=0x168, ioaddr2=0x360, irq=9 + +#======================================================================= +# ATA[0-3]-MASTER, ATA[0-3]-SLAVE +# +# This defines the type and characteristics of all attached ata devices: +# type= type of attached device [disk|cdrom] +# mode= only valid for disks [flat|concat|external|dll|sparse|vmware3] +# [vmware4|undoable|growing|volatile|vpc] +# [vbox|vvfat] +# path= path of the image / directory +# cylinders= only valid for disks +# heads= only valid for disks +# spt= only valid for disks +# status= only valid for cdroms [inserted|ejected] +# biosdetect= type of biosdetection [auto|cmos|none] +# translation=type of translation of the bios, only for disks [none|lba|large|rechs|auto] +# model= string returned by identify device command +# journal= optional filename of the redolog for undoable, volatile and vvfat disks +# +# Point this at a hard disk image file, cdrom iso file, or physical cdrom +# device. To create a hard disk image, try running bximage. It will help you +# choose the size and then suggest a line that works with it. +# +# In UNIX it may be possible to use a raw device as a Bochs hard disk, +# but WE DON'T RECOMMEND IT. In Windows there is no easy way. +# +# In windows, the drive letter + colon notation should be used for cdroms. +# Depending on versions of windows and drivers, you may only be able to +# access the "first" cdrom in the system. On MacOSX, use path="drive" +# to access the physical drive. +# +# The path is mandatory for hard disks. Disk geometry autodetection works with +# images created by bximage if CHS is set to 0/0/0 (cylinders are calculated +# using heads=16 and spt=63). For other hard disk images and modes the +# cylinders, heads, and spt are mandatory. In all cases the disk size reported +# from the image must be exactly C*H*S*512. +# +# Default values are: +# mode=flat, biosdetect=auto, translation=auto, model="Generic 1234" +# +# The biosdetect option has currently no effect on the bios +# +# Examples: +# ata0-master: type=disk, mode=flat, path=10M.sample, cylinders=306, heads=4, spt=17 +# ata0-slave: type=disk, mode=flat, path=20M.sample, cylinders=615, heads=4, spt=17 +# ata1-master: type=disk, mode=flat, path=30M.sample, cylinders=615, heads=6, spt=17 +# ata1-slave: type=disk, mode=flat, path=46M.sample, cylinders=940, heads=6, spt=17 +# ata2-master: type=disk, mode=flat, path=62M.sample, cylinders=940, heads=8, spt=17 +# ata2-slave: type=disk, mode=flat, path=112M.sample, cylinders=900, heads=15, spt=17 +# ata3-master: type=disk, mode=flat, path=483M.sample, cylinders=1024, heads=15, spt=63 +# ata3-slave: type=cdrom, path=iso.sample, status=inserted +#======================================================================= +ata0-master: type=disk, mode=flat, path="vm/hdisk.img", cylinders=0 # autodetect +#ata0-master: type=disk, mode=flat, path="30M.sample", cylinders=615, heads=6, spt=17 +#ata0-master: type=disk, mode=flat, path="c.img", cylinders=0 # autodetect +#ata0-slave: type=disk, mode=vvfat, path=/bochs/images/vvfat, journal=vvfat.redolog +#ata0-slave: type=cdrom, path=D:, status=inserted +#ata0-slave: type=cdrom, path=/dev/cdrom, status=inserted +#ata0-slave: type=cdrom, path="drive", status=inserted +#ata0-slave: type=cdrom, path=/dev/rcd0d, status=inserted + +#======================================================================= +# BOOT: +# This defines the boot sequence. Now you can specify up to 3 boot drives, +# which can be 'floppy', 'disk', 'cdrom' or 'network' (boot ROM). +# Legacy 'a' and 'c' are also supported. +# Examples: +# boot: floppy +# boot: cdrom, disk +# boot: network, disk +# boot: cdrom, floppy, disk +#======================================================================= +boot: disk + +#======================================================================= +# FLOPPY_BOOTSIG_CHECK: disabled=[0|1] +# Enables or disables the 0xaa55 signature check on boot floppies +# Defaults to disabled=0 +# Examples: +# floppy_bootsig_check: disabled=0 +# floppy_bootsig_check: disabled=1 +#======================================================================= +floppy_bootsig_check: disabled=0 + +#======================================================================= +# LOG: +# Give the path of the log file you'd like Bochs debug and misc. verbiage +# to be written to. If you don't use this option or set the filename to +# '-' the output is written to the console. If you really don't want it, +# make it "/dev/null" (Unix) or "nul" (win32). :^( +# +# Examples: +# log: ./bochs.out +# log: /dev/tty +#======================================================================= +#log: /dev/null +log: bochsout.txt + +#======================================================================= +# LOGPREFIX: +# This handles the format of the string prepended to each log line. +# You may use those special tokens : +# %t : 11 decimal digits timer tick +# %i : 8 hexadecimal digits of cpu current eip (ignored in SMP configuration) +# %e : 1 character event type ('i'nfo, 'd'ebug, 'p'anic, 'e'rror) +# %d : 5 characters string of the device, between brackets +# +# Default : %t%e%d +# Examples: +# logprefix: %t-%e-@%i-%d +# logprefix: %i%e%d +#======================================================================= +#logprefix: %t%e%d + +#======================================================================= +# LOG CONTROLS +# +# Bochs has four severity levels for event logging. +# panic: cannot proceed. If you choose to continue after a panic, +# don't be surprised if you get strange behavior or crashes. +# error: something went wrong, but it is probably safe to continue the +# simulation. +# info: interesting or useful messages. +# debug: messages useful only when debugging the code. This may +# spit out thousands per second. +# +# For events of each level, you can choose to exit Bochs ('fatal'), 'ask', +# 'warn', 'report' or 'ignore'. The choices 'ask' and 'warn' are not supported +# by all guis, since they should bring up a dialog box. The 'warn' dialog is +# designed to confirm errors and the 'ask' dialog is usually used for panics +# and asks the user how to proceed. +# +# It is also possible to specify the 'action' to do for each Bochs facility +# separately (e.g. crash on panics from everything except the cdrom, and only +# report those). See the 'log function' module list in the user documentation. +# +# If you are experiencing many panics, it can be helpful to change +# the panic action to report instead of fatal. However, be aware +# that anything executed after a panic is uncharted territory and can +# cause bochs to become unstable. The panic is a "graceful exit," so +# if you disable it you may get a spectacular disaster instead. +#======================================================================= +panic: action=ask +error: action=report +info: action=report +debug: action=ignore, pci=report # report BX_DEBUG from module 'pci' + +#======================================================================= +# DEBUGGER_LOG: +# Give the path of the log file you'd like Bochs to log debugger output. +# If you really don't want it, make it /dev/null or '-'. :^( +# +# Examples: +# debugger_log: ./debugger.out +#======================================================================= +#debugger_log: /dev/null +#debugger_log: debugger.out +debugger_log: - + +#======================================================================= +# COM1, COM2, COM3, COM4: +# This defines a serial port (UART type 16550A). In the 'term' mode you can +# specify a device to use as com1. This can be a real serial line, or a pty. +# To use a pty (under X/Unix), create two windows (xterms, usually). One of +# them will run bochs, and the other will act as com1. Find out the tty the com1 +# window using the `tty' command, and use that as the `dev' parameter. +# Then do `sleep 1000000' in the com1 window to keep the shell from +# messing with things, and run bochs in the other window. Serial I/O to +# com1 (port 0x3f8) will all go to the other window. +# In socket* and pipe* (win32 only) modes Bochs becomes either socket/named pipe +# client or server. In client mode it connects to an already running server (if +# connection fails Bochs treats com port as not connected). In server mode it +# opens socket/named pipe and waits until a client application connects to it +# before starting simulation. This mode is useful for remote debugging (e.g. +# with gdb's "target remote host:port" command or windbg's command line option +# -k com:pipe,port=\\.\pipe\pipename). Socket modes use simple TCP communication, +# pipe modes use duplex byte mode pipes. +# Other serial modes are 'null' (no input/output), 'file' (output to a file +# specified as the 'dev' parameter and changeable at runtime), 'raw' (use the +# real serial port - partly implemented on win32), 'mouse' (standard serial +# mouse - requires mouse option setting 'type=serial', 'type=serial_wheel' or +# 'type=serial_msys'). +# +# Examples: +# com1: enabled=1, mode=null +# com1: enabled=1, mode=mouse +# com2: enabled=1, mode=file, dev=serial.out +# com3: enabled=1, mode=raw, dev=com1 +# com3: enabled=1, mode=socket-client, dev=localhost:8888 +# com3: enabled=1, mode=socket-server, dev=localhost:8888 +# com4: enabled=1, mode=pipe-client, dev=\\.\pipe\mypipe +# com4: enabled=1, mode=pipe-server, dev=\\.\pipe\mypipe +#======================================================================= +#com1: enabled=1, mode=term, dev=/dev/ttyp9 + + +#======================================================================= +# PARPORT1, PARPORT2: +# This defines a parallel (printer) port. When turned on and an output file is +# defined the emulated printer port sends characters printed by the guest OS +# into the output file. On some platforms a device filename can be used to +# send the data to the real parallel port (e.g. "/dev/lp0" on Linux, "lpt1" on +# win32 platforms). The output file can be changed at runtime. +# +# Examples: +# parport1: enabled=1, file="parport.out" +# parport2: enabled=1, file="/dev/lp0" +# parport1: enabled=0 +#======================================================================= +parport1: enabled=1, file="parport.out" + +#======================================================================= +# SOUND: +# This defines the lowlevel sound driver(s) for the wave (PCM) input / output +# and the MIDI output feature and (if necessary) the devices to be used. +# It can have several of the following properties. +# All properties are in the format sound: property=value +# +# waveoutdrv: +# This defines the driver to be used for the waveout feature. +# Possible values are 'file' (all wave data sent to file), 'dummy' (no +# output) and the platform-dependant drivers 'alsa', 'oss', 'osx', 'sdl' +# and 'win'. +# waveout: +# This defines the device to be used for wave output (if necessary) or +# the output file for the 'file' driver. +# waveindrv: +# This defines the driver to be used for the wavein feature. +# Possible values are 'dummy' (recording silence) and platform-dependent +# drivers 'alsa', 'oss', 'sdl' and 'win'. +# wavein: +# This defines the device to be used for wave input (if necessary). +# midioutdrv: +# This defines the driver to be used for the MIDI output feature. +# Possible values are 'file' (all MIDI data sent to file), 'dummy' (no +# output) and platform-dependent drivers 'alsa', 'oss', 'osx' and 'win'. +# midiout: +# This defines the device to be used for MIDI output (if necessary). +# driver: +# This defines the driver to be used for all sound features with one +# property. Possible values are 'default' (platform default) and all +# other choices described above. Overriding one or more settings with +# the specific driver parameter is possible. +# +# Example for different drivers: +# sound: waveoutdrv=sdl, waveindrv=alsa, midioutdrv=dummy +#======================================================================= +#sound: driver=default, waveout=/dev/dsp. wavein=, midiout= +#sound: waveoutdrv=sdl, waveindrv=alsa, midioutdrv=dummy + +#======================================================================= +# SPEAKER: +# This defines the PC speaker output mode. In the 'sound' mode the beep +# is generated by the square wave generator which is a part of the +# lowlevel sound support. The 'system' mode is only available on Linux +# and Windows. On Linux /dev/console is used for output and on Windows +# the Beep() function. The 'gui' mode forwards the beep to the related +# gui methods (currently only used by the Carbon gui). +#======================================================================= +speaker: enabled=1, mode=sound + +#======================================================================= +# SB16: +# This defines the SB16 sound emulation. It can have several of the +# following properties. +# All properties are in the format sb16: property=value +# +# enabled: +# This optional property controls the presence of the SB16 emulation. +# The emulation is turned on unless this property is used and set to 0. +# midimode: This parameter specifies what to do with the MIDI output. +# 0 = no output +# 1 = output to device specified with the sound option (system dependent) +# 2 = MIDI or raw data output to file (depends on file name extension) +# 3 = dual output (mode 1 and 2 at the same time) +# midifile: This is the file where the midi output is stored (midimode 2 or 3). +# wavemode: This parameter specifies what to do with the PCM output. +# 0 = no output +# 1 = output to device specified with the sound option (system dependent) +# 2 = VOC, WAV or raw data output to file (depends on file name extension) +# 3 = dual output (mode 1 and 2 at the same time) +# wavefile: This is the file where the wave output is stored (wavemode 2 or 3). +# loglevel: +# 0=no log +# 1=resource changes, midi program and bank changes +# 2=severe errors +# 3=all errors +# 4=all errors plus all port accesses +# 5=all errors and port accesses plus a lot of extra info +# log: The file to write the sb16 emulator messages to. +# dmatimer: +# microseconds per second for a DMA cycle. Make it smaller to fix +# non-continuous sound. 750000 is usually a good value. This needs a +# reasonably correct setting for the IPS parameter of the CPU option. +# +# Examples for output modes: +# sb16: midimode=2, midifile="output.mid", wavemode=1 # MIDI to file +# sb16: midimode=1, wavemode=3, wavefile="output.wav" # wave to file and device +#======================================================================= +#sb16: enabled=1, midimode=1, wavemode=1, loglevel=5, log=sb16.log, dmatimer=600000 + +#======================================================================= +# ES1370: +# This defines the ES1370 sound emulation (recording and playback - except +# DAC1+DAC2 output at the same time). The parameter 'enabled' controls the +# presence of the device. The wave and MIDI output can be sent to device, file +# or both using the parameters 'wavemode', 'wavefile', 'midimode' and +# 'midifile'. See the description of these parameters at the SB16 directive. +# +# Examples: +# es1370: enabled=1, wavemode=1 # use 'sound' parameters +# es1370: enabled=1, wavemode=2, wavefile=output.voc # send output to file +#======================================================================= +#es1370: enabled=1, wavemode=1 + +#======================================================================= +# ne2k: NE2000 compatible ethernet adapter +# +# Format: +# ne2k: enabled=1, ioaddr=IOADDR, irq=IRQ, mac=MACADDR, ethmod=MODULE, +# ethdev=DEVICE, script=SCRIPT, bootrom=BOOTROM +# +# IOADDR, IRQ: You probably won't need to change ioaddr and irq, unless there +# are IRQ conflicts. These arguments are ignored when assign the ne2k to a +# PCI slot. +# +# MAC: The MAC address MUST NOT match the address of any machine on the net. +# Also, the first byte must be an even number (bit 0 set means a multicast +# address), and you cannot use ff:ff:ff:ff:ff:ff because that's the broadcast +# address. For the ethertap module, you must use fe:fd:00:00:00:01. There may +# be other restrictions too. To be safe, just use the b0:c4... address. +# +# ETHDEV: The ethdev value is the name of the network interface on your host +# platform. On UNIX machines, you can get the name by running ifconfig. On +# Windows machines, you must run niclist to get the name of the ethdev. +# Niclist source code is in misc/niclist.c and it is included in Windows +# binary releases. +# The 'socket' module uses this parameter to specify the UDP port for +# receiving packets and (optional) the host to connect. +# +# SCRIPT: The script value is optional, and is the name of a script that +# is executed after bochs initialize the network interface. You can use +# this script to configure this network interface, or enable masquerading. +# This is mainly useful for the tun/tap devices that only exist during +# Bochs execution. The network interface name is supplied to the script +# as first parameter. +# The 'slirp' module uses this parameter to specify a config file for +# setting up an alternative IP configuration or additional features. +# The 'vnet' module uses this parameter to specify an alternative +# log file name. +# +# BOOTROM: The bootrom value is optional, and is the name of the ROM image +# to load. Note that this feature is only implemented for the PCI version of +# the NE2000. +# +# If you don't want to make connections to any physical networks, +# you can use the following 'ethmod's to simulate a virtual network. +# null: All packets are discarded, but logged to a few files. +# vde: Virtual Distributed Ethernet +# vnet: ARP, ICMP-echo(ping), DHCP and read/write TFTP are simulated. +# The virtual host uses 192.168.10.1. +# DHCP assigns 192.168.10.2 to the guest. +# TFTP uses the 'ethdev' value for the root directory and doesn't +# overwrite files. +# socket: Connect up to 6 Bochs instances with external program 'bxhub' +# (simulating an ethernet hub). It provides the same services as the +# 'vnet' module and assigns IP addresses like 'slirp' (10.0.2.x). +# +#======================================================================= +# ne2k: ioaddr=0x300, irq=9, mac=fe:fd:00:00:00:01, ethmod=fbsd, ethdev=en0 #macosx +# ne2k: ioaddr=0x300, irq=9, mac=b0:c4:20:00:00:00, ethmod=fbsd, ethdev=xl0 +# ne2k: ioaddr=0x300, irq=9, mac=b0:c4:20:00:00:00, ethmod=linux, ethdev=eth0 +# ne2k: ioaddr=0x300, irq=9, mac=b0:c4:20:00:00:01, ethmod=win32, ethdev=MYCARD +# ne2k: ioaddr=0x300, irq=9, mac=fe:fd:00:00:00:01, ethmod=tap, ethdev=tap0 +# ne2k: ioaddr=0x300, irq=9, mac=fe:fd:00:00:00:01, ethmod=tuntap, ethdev=/dev/net/tun0, script=./tunconfig +# ne2k: ioaddr=0x300, irq=9, mac=b0:c4:20:00:00:01, ethmod=null, ethdev=eth0 +# ne2k: ioaddr=0x300, irq=9, mac=b0:c4:20:00:00:01, ethmod=vde, ethdev="/tmp/vde.ctl" +# ne2k: ioaddr=0x300, irq=9, mac=b0:c4:20:00:00:01, ethmod=vnet, ethdev="c:/temp" +# ne2k: mac=b0:c4:20:00:00:01, ethmod=socket, ethdev=40000 # use localhost +# ne2k: mac=b0:c4:20:00:00:01, ethmod=socket, ethdev=mymachine:40000 +# ne2k: mac=b0:c4:20:00:00:01, ethmod=slirp, script=slirp.conf, bootrom=ne2k_pci.rom + +#======================================================================= +# pcipnic: Bochs/Etherboot pseudo-NIC +# +# Format: +# pcipnic: enabled=1, mac=MACADDR, ethmod=MODULE, ethdev=DEVICE, script=SCRIPT, +# bootrom=BOOTROM +# +# The pseudo-NIC accepts the same syntax (for mac, ethmod, ethdev, script, +# bootrom) and supports the same networking modules as the NE2000 adapter. +#======================================================================= +#pcipnic: enabled=1, mac=b0:c4:20:00:00:00, ethmod=vnet + +#======================================================================= +# e1000: Intel(R) 82540EM Gigabit Ethernet adapter +# +# Format: +# e1000: enabled=1, mac=MACADDR, ethmod=MODULE, ethdev=DEVICE, script=SCRIPT +# bootrom=BOOTROM +# +# The E1000 accepts the same syntax (for mac, ethmod, ethdev, script, bootrom) +# and supports the same networking modules as the NE2000 adapter. +#======================================================================= +#e1000: enabled=1, mac=52:54:00:12:34:56, ethmod=slirp, script=slirp.conf + +#======================================================================= +# USB_UHCI: +# This option controls the presence of the USB root hub which is a part +# of the i440FX PCI chipset. With the portX parameter you can connect devices +# to the hub (currently supported: 'mouse', 'tablet', 'keypad', 'disk', 'cdrom', +# 'floppy', 'hub' and 'printer'). +# +# If you connect the mouse or tablet to one of the ports, Bochs forwards the +# mouse movement data to the USB device instead of the selected mouse type. +# When connecting the keypad to one of the ports, Bochs forwards the input of +# the numeric keypad to the USB device instead of the PS/2 keyboard. +# +# To connect a 'flat' mode image as a USB hardisk you can use the 'disk' device +# with the path to the image separated with a colon. To use other disk image modes +# similar to ATA disks the syntax 'disk:mode:filename' must be used (see below). +# +# To emulate a USB cdrom you can use the 'cdrom' device name and the path to +# an ISO image or raw device name also separated with a colon. An option to +# insert/eject media is available in the runtime configuration. +# +# To emulate a USB floppy you can use the 'floppy' device with the path to the +# image separated with a colon. To use the VVFAT image mode similar to the +# legacy floppy the syntax 'floppy:vvfat:directory' must be used (see below). +# An option to insert/eject media is available in the runtime configuration. +# +# The device name 'hub' connects an external hub with max. 8 ports (default: 4) +# to the root hub. To specify the number of ports you have to add the value +# separated with a colon. Connecting devices to the external hub ports is only +# available in the runtime configuration. +# +# The device 'printer' emulates the HP Deskjet 920C printer. The PCL data is +# sent to a file specified in bochsrc.txt. The current code appends the PCL +# code to the file if the file already existed. The output file can be +# changed at runtime. +# +# The optionsX parameter can be used to assign specific options to the device +# connected to the corresponding USB port. Currently this feature is used to +# set the speed reported by device ('low', 'full', 'high' or 'super'). The +# availabe speed choices depend on both HC and device. The option 'debug' turns +# on debug output for the device at connection time. +# For the USB 'disk' device the optionsX parameter can be used to specify an +# alternative redolog file (journal) of some image modes. For 'vvfat' mode USB +# disks the optionsX parameter can be used to specify the disk size (range +# 128M ... 128G). If the size is not specified, it defaults to 504M. +# For the USB 'floppy' device the optionsX parameter can be used to specify an +# alternative device ID to be reported. Currently only the model "teac" is +# supported (can fix hw detection in some guest OS). The USB floppy also +# accepts the parameter "write_protected" with valid values 0 and 1 to select +# the access mode (default is 0). +#======================================================================= +#usb_uhci: enabled=1 +#usb_uhci: enabled=1, port1=mouse, port2=disk:usbstick.img +#usb_uhci: enabled=1, port1=hub:7, port2=disk:growing:usbdisk.img +#usb_uhci: enabled=1, port2=disk:undoable:usbdisk.img, options2=journal:redo.log +#usb_uhci: enabled=1, port2=disk:vvfat:vvfat, options2="debug,speed:full" +#usb_uhci: enabled=1, port1=printer:printdata.bin, port2=cdrom:image.iso +#usb_uhci: enabled=1, port2=floppy:vvfat:diskette, options2="model:teac" + +#======================================================================= +# USB_OHCI: +# This option controls the presence of the USB OHCI host controller with a +# 2-port hub. The portX parameter accepts the same device types with the same +# syntax as the UHCI controller (see above). The optionsX parameter is also +# available on OHCI. +#======================================================================= +#usb_ohci: enabled=1 +#usb_ohci: enabled=1, port1=printer:usbprinter.bin + +#======================================================================= +# USB_EHCI: +# This option controls the presence of the USB EHCI host controller with a +# 6-port hub. The portX parameter accepts the same device types with the +# same syntax as the UHCI controller (see above). The optionsX parameter is +# also available on EHCI. +#======================================================================= +#usb_ehci: enabled=1 + +#======================================================================= +# USB_XHCI: +# This option controls the presence of the USB xHCI host controller with a +# 4-port hub. The portX parameter accepts the same device types with the +# same syntax as the UHCI controller (see above). The optionsX parameter is +# also available on xHCI. NOTE: port 1 and 2 are USB3 and only support +# super-speed devices, but port 3 and 4 are USB2 and support speed settings +# low, full and high. +#======================================================================= +#usb_xhci: enabled=1 + +#======================================================================= +# PCIDEV: +# PCI host device mapping +# WARNING: This Bochs feature is not maintained yet and may fail. +#======================================================================= +#pcidev: vendor=0x1234, device=0x5678 + +#======================================================================= +# GDBSTUB: +# Enable GDB stub. See user documentation for details. +# Default value is enabled=0. +# WARNING: This Bochs feature is not maintained yet and may fail. +#======================================================================= +#gdbstub: enabled=0, port=1234, text_base=0, data_base=0, bss_base=0 + +#======================================================================= +# MAGIC_BREAK: +# This enables the "magic breakpoint" feature when using the debugger. +# The useless cpu instruction XCHG BX, BX causes Bochs to enter the +# debugger mode. This might be useful for software development. +# +# Example: +# magic_break: enabled=1 +#======================================================================= +#magic_break: enabled=1 + +#======================================================================= +# DEBUG_SYMBOLS: +# This loads symbols from the specified file for use in Bochs' internal +# debugger. Symbols are loaded into global context. This is equivalent to +# issuing ldsym debugger command at start up. +# +# Example: +# debug_symbols: file="kernel.sym" +# debug_symbols: file="kernel.sym", offset=0x80000000 +#======================================================================= +#debug_symbols: file="kernel.sym" + +#print_timestamps: enabled=1 + +#======================================================================= +# PORT_E9_HACK: +# The 0xE9 port doesn't exists in normal ISA architecture. However, we +# define a convention here, to display on the console of the system running +# Bochs anything that is written to it. The idea is to provide debug output +# very early when writing BIOS or OS code for example, without having to +# bother with setting up a serial port or etc. Reading from port 0xE9 will +# will return 0xe9 to let you know if the feature is available. +# Leave this 0 unless you have a reason to use it. +# +# Example: +# port_e9_hack: enabled=1 +#======================================================================= +#port_e9_hack: enabled=1 + +#======================================================================= +# other stuff +#======================================================================= +# WARNING: This Bochs feature is not maintained yet. Is it still used ? +#load32bitOSImage: os=nullkernel, path=../kernel.img, iolog=../vga_io.log +#load32bitOSImage: os=linux, path=../linux.img, iolog=../vga_io.log, initrd=../initrd.img + +#======================================================================= +# fullscreen: ONLY IMPLEMENTED ON AMIGA +# Request that Bochs occupy the entire screen instead of a +# window. +# +# Examples: +# fullscreen: enabled=0 +# fullscreen: enabled=1 +#======================================================================= +#fullscreen: enabled=0 +#screenmode: name="sample" + +#======================================================================= +# USER_PLUGIN: +# Load user-defined plugin. This option is available only if Bochs is +# compiled with plugin support. Maximum 8 different plugins are supported. +# See the example in the Bochs sources how to write a plugin device. +#======================================================================= +#user_plugin: name=testdev + +#======================================================================= +# for Macintosh, use the style of pathnames in the following +# examples. +# +# vgaromimage: :bios:VGABIOS-elpin-2.40 +# romimage: file=:bios:BIOS-bochs-latest, address=0xf0000 +# floppya: 1_44=[fd:], status=inserted +#======================================================================= + +#======================================================================= +# MEGS +# Set the number of Megabytes of physical memory you want to emulate. +# The default is 32MB, most OS's won't need more than that. +# The maximum amount of memory supported is 2048Mb. +# The 'MEGS' option is deprecated. Use 'MEMORY' option instead. +#======================================================================= +#megs: 256 +#megs: 128 +#megs: 64 +#megs: 32 +#megs: 16 +#megs: 8 diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..0e0eaef --- /dev/null +++ b/Makefile @@ -0,0 +1,124 @@ +OLD_KOBJ=multiboot.o kmain.o vga_terminal.o stdlib.o x86stdlib.o \ + gdt.o x86gdt.o pic.o idt.o x86idt.o x86int.o string.o \ + paging.o x86utils.o x86_utils.o keyboard.o exceptions.o \ + memory.o pci.o x86io.o pit.o ahci.o + +KOBJ=start.o kmain.o x64io.o stdlib.o string.o vga_terminal.o \ + x64stdlib.o va_list.o idt.o x64idt.o x64ints.o pic.o pit.o \ + exceptions.o keyboard.o paging.o multiboot.o lvalloc.o \ + pci.o ahci.o disk.o fat.o heap.o x64utils.o file.o \ + x64font.o video.o bmp.o +LOBJ=loader.o lmain.o x86io.o x86stdlib.o x86gdt.o stdlib.o \ + string.o vga_terminal.o gdt.o x86enter64.o memory.o idt.o \ + exceptions.o x86idt.o x86int.o + +KSRC_DIR=kernel/ +LSRC_DIR=loader/ +KOBJ_DIR=kobj/ +LOBJ_DIR=lobj/ +INCLUDE=kernel/ +LINCLUDE=loader/ + +TOOLCHAIN32=/home/adriane/opt/cross +HDISK=/home/adriane/lenochka_vm/hdisk.img +CC32=$(TOOLCHAIN32)/bin/i686-elf-gcc +AS32=nasm +LD32=$(TOOLCHAIN32)/i686-elf/bin/ld + +TOOLCHAIN=/home/adriane/opt64/cross +CC=$(TOOLCHAIN)/bin/x86_64-elf-gcc +AS=nasm +LD=$(TOOLCHAIN)/x86_64-elf/bin/ld + +# 32 bit +OPT_C32=-O0 -Wall -std=c99 -nostdlib -nostartfiles -nodefaultlibs \ + -Wimplicit-function-declaration -fno-stack-protector +OPT_ASM32=-s -f elf32 +OPT_LD32=-T loader.ld --build-id=none -m elf_i386 -Map lmap.txt + +# 64 bit +OPT_C=-m64 -ffreestanding -z max-page-size=0x1000 -mno-red-zone \ + -mno-mmx -mno-sse -mno-sse2 -std=gnu99 -O0 -Wall -Wextra \ + -nostdlib -nostartfiles -nodefaultlibs -mcmodel=large +OPT_ASM=-s -f elf64 +OPT_LD=-T lenochka.ld --build-id=none -m elf_x86_64 -Map kmap.txt \ + -z max-page-size=0x1000 + +%.o: $(KSRC_DIR)%.c + $(CC) $(OPT_C) -c $< -o $(KOBJ_DIR)$@ -I$(INCLUDE) +%.o: $(KSRC_DIR)%.asm + $(AS) $(OPT_ASM) $< -o $(KOBJ_DIR)$@ + +loader.elf: + $(AS32) $(OPT_ASM32) $(LSRC_DIR)loader.asm -o $(LOBJ_DIR)loader.o + $(AS32) $(OPT_ASM32) $(LSRC_DIR)x86io.asm -o $(LOBJ_DIR)x86io.o + $(AS32) $(OPT_ASM32) $(LSRC_DIR)x86stdlib.asm -o $(LOBJ_DIR)x86stdlib.o + $(AS32) $(OPT_ASM32) $(LSRC_DIR)x86gdt.asm -o $(LOBJ_DIR)x86gdt.o + $(AS32) $(OPT_ASM32) $(LSRC_DIR)x86idt.asm -o $(LOBJ_DIR)x86idt.o + $(AS32) $(OPT_ASM32) $(LSRC_DIR)x86int.asm -o $(LOBJ_DIR)x86int.o + + $(CC32) $(OPT_C32) -c $(LSRC_DIR)stdlib.c -o $(LOBJ_DIR)stdlib.o -I$(LINCLUDE) + $(CC32) $(OPT_C32) -c $(LSRC_DIR)gdt.c -o $(LOBJ_DIR)gdt.o -I$(LINCLUDE) + $(CC32) $(OPT_C32) -c $(LSRC_DIR)vga_terminal.c -o $(LOBJ_DIR)vga_terminal.o -I$(LINCLUDE) + $(CC32) $(OPT_C32) -c $(LSRC_DIR)string.c -o $(LOBJ_DIR)string.o -I$(LINCLUDE) + $(CC32) $(OPT_C32) -c $(LSRC_DIR)memory.c -o $(LOBJ_DIR)memory.o -I$(LINCLUDE) + $(CC32) $(OPT_C32) -c $(LSRC_DIR)idt.c -o $(LOBJ_DIR)idt.o -I$(LINCLUDE) + $(CC32) $(OPT_C32) -c $(LSRC_DIR)exceptions.c -o $(LOBJ_DIR)exceptions.o -I$(LINCLUDE) + $(CC32) $(OPT_C32) -c $(LSRC_DIR)lmain.c -o $(LOBJ_DIR)lmain.o -I$(LINCLUDE) + + $(AS32) $(OPT_ASM32) $(LSRC_DIR)x86enter64.asm -o $(LOBJ_DIR)x86enter64.o + + $(LD32) $(OPT_LD32) -o os/loader.elf $(addprefix $(LOBJ_DIR),$(LOBJ)) + +lenochka.elf: $(KOBJ) + $(LD) $(OPT_LD) -o os/lenochka.elf $(addprefix $(KOBJ_DIR),$(KOBJ)) + +mkbootldr: + nasm -f bin boot/stage1.asm -o boot/boot.bin + nasm -f bin boot/stage2.asm -o os/BOOTLOAD.BIN + +format: + dd if=/dev/zero of=vm/hdisk.img bs=1M count=64 + mkdosfs -F 16 vm/hdisk.img + +mount: + losetup /dev/loop0 $(HDISK) + losetup /dev/loop1 $(HDISK) -o 1048576 + losetup /dev/loop2 $(HDISK) -o 34603008 + mount -o umask=000 /dev/loop1 /media/img + mount -o umask=000 /dev/loop2 /media/disk1 + +update: + cp os/loader.elf /media/img/boot/loader.elf + cp os/lenochka.elf /media/img/boot/lenochka.elf + +unmount: + umount /media/img + umount /media/disk1 + losetup -d /dev/loop0 + losetup -d /dev/loop1 + losetup -d /dev/loop2 + +unmount1: + losetup -d /dev/loop0 + losetup -d /dev/loop1 + losetup -d /dev/loop2 + +install-usb: + mount -o umask=000 /dev/sdb1 /media/usb_3 + cp os/loader.elf /media/usb_3/boot/loader.elf + cp os/lenochka.elf /media/usb_3/boot/lenochka.elf + umount /media/usb_3 + +run-qemu: + qemu-system-x86_64 -hda $(HDISK) -m 512M -machine q35 + +run-qemu-debug: + qemu-system-x86_64 -hda $(HDISK) -m 512M -machine q35 -d int \ + -no-shutdown -no-reboot -d guest_errors + +clean: + rm -rf kobj/* + rm -rf lobj/* + +all: lenochka.elf diff --git a/bdf2bin b/bdf2bin new file mode 100644 index 0000000000000000000000000000000000000000..e1ddff9507e540a170fd9c248822388919addd71 GIT binary patch literal 20272 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 Ji-Cn@{{!g4ZY2N! literal 0 HcmV?d00001 diff --git a/bdf2bin.c b/bdf2bin.c new file mode 100644 index 0000000..5a52d0f --- /dev/null +++ b/bdf2bin.c @@ -0,0 +1,95 @@ +#include +#include +#include +#include + +//align(8) chars = amount of characters +//align(8) encoding table - 2 byte array [chars] +//align(8) bitmap table - 16 byte array [chars] + +#define ROUND2_UP(val,bit) (( (val>>bit) \ + + ( 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 literal 0 HcmV?d00001 diff --git a/kernel/ahci.c b/kernel/ahci.c new file mode 100644 index 0000000..8f6c463 --- /dev/null +++ b/kernel/ahci.c @@ -0,0 +1,276 @@ +#include "ahci.h" +#include "pci.h" +#include "pit.h" +#include "io.h" +#include "lvalloc.h" +#include "paging.h" +#include "stdlib.h" + +typedef struct { + u64 hba_phys; + hba_port_t* sata; + hba_port_t* atapi; + u16* buf; +} ahci_t; + +static ahci_t s_ahci; +static hba_mem_t* HBA; + +void ahci_issue_cmd(hba_port_t* port,u64 cmd) +{ + if(!(port->cmd & SCMD_ST)) + port->cmd |= SCMD_ST; + port->cmd |= (1<<28); + + port->serr = port->serr; + port->is = port->is; + + //If idle, reset PxCMD + /*if(port->cmd & (0x7F<<23)) + { + port->cmd &= ~SCMD_ST; + + port->cmd |= SCMD_ST|SCMD_FRE|(1<<3); + }*/ + + port->ci = (1<tfd & ATA_DEV_BUSY) + { + } +} + +u64 ahci_read_sectors(hba_port_t* port,u64 lba,u64 sectors, + u64 __phys buf) +{ + hba_cmd_header_t* cmdhdr = (hba_cmd_header_t*)port->clb; + hba_cmd_tbl_t* cmdtbl = (hba_cmd_tbl_t*)cmdhdr->ctba; + fis_reg_h2d_t* fis = (fis_reg_h2d_t*)&cmdtbl->cfis; + + port->is = 0xFFFFFFFF; + + cmdhdr->cfl = sizeof(fis_reg_h2d_t)/sizeof(u32); + cmdhdr->w = 0; + cmdhdr->prdtl = (sectors>>4)+1; + + kmemzero(cmdtbl, sizeof(hba_cmd_tbl_t) + + (cmdhdr->prdtl-1)*sizeof(hba_prdt_entry_t)); + kmemzero(fis,sizeof(fis_reg_h2d_t)); + + fis->fis_type = FIS_TYPE_REG_H2D; + fis->c = 1; + fis->command = ATA_CMD_READ_DMA_EX; + + fis->lba0 = lba&0xFF; + fis->lba1 = (lba>>8)&0xFF; + fis->lba2 = (lba>>16)&0xFF; + fis->device = ATA_LBA_MODE; + fis->lba3 = (lba>>24)&0xFF; + fis->lba4 = (lba>>32)&0xFF; + fis->lba5 = (lba>>36)&0xFF; + + fis->countl = sectors&0xFF; + fis->counth = (sectors>>8)&0xFF; + + u64 i; + for(i = 0; i < (u64)(cmdhdr->prdtl-1); i++) + { + kmemzero(&cmdtbl->prdt_entry[i],sizeof(hba_prdt_entry_t)); + cmdtbl->prdt_entry[i].dba = buf; + cmdtbl->prdt_entry[i].dbc = 8191; + cmdtbl->prdt_entry[i].i = 1; + + buf += 8192; + sectors -= 16; + } + cmdtbl->prdt_entry[i].dba = buf; + cmdtbl->prdt_entry[i].dbc = (sectors<<9)-1; + cmdtbl->prdt_entry[i].i = 1; + + ahci_issue_cmd(port,0); + if(port->is & (1<<30)) + { + kprintf("disk read error!\n"); + return 1; + } + return 0; +} + +u64 ahci_identify(hba_port_t* port) +{ + hba_cmd_header_t* cmdhdr = (hba_cmd_header_t*)port->clb; + hba_cmd_tbl_t* cmdtbl = (hba_cmd_tbl_t*)cmdhdr->ctba; + fis_reg_h2d_t* fis = (fis_reg_h2d_t*)&cmdtbl->cfis; + + port->is = 0xFFFFFFFF; + + cmdhdr->cfl = sizeof(fis_reg_h2d_t)/sizeof(u32); + cmdhdr->w = 0; + cmdhdr->prdtl = 1; + + kmemzero(cmdtbl, sizeof(hba_cmd_tbl_t) + + (cmdhdr->prdtl-1)*sizeof(hba_prdt_entry_t)); + kmemzero(fis,sizeof(fis_reg_h2d_t)); + + fis->fis_type = FIS_TYPE_REG_H2D; + fis->c = 1; + fis->command = ATA_CMD_IDENTIFY; + + fis->lba0 = 0; + fis->lba1 = 0; + fis->lba2 = 0; + fis->device = ATA_LBA_MODE; + fis->lba3 = 0; + fis->lba4 = 0; + fis->lba5 = 0; + + fis->countl = 1; + fis->counth = 0; + + cmdtbl->prdt_entry[0].dba = (u64)s_ahci.buf; + cmdtbl->prdt_entry[0].dbc = 511; + cmdtbl->prdt_entry[0].i = 1; + + ahci_issue_cmd(port,0); + + return *(u64*)(&s_ahci.buf[100]); +} + +void port_start(hba_port_t* port) +{ + //while(port->cmd & (1<<15)){__asm("nop");} + + port->cmd |= SCMD_ST; + port->cmd |= SCMD_FRE; +} + +void port_stop(hba_port_t* port) +{ + if(!(port->cmd & SCMD_ST)) return; + + port->cmd &= ~SCMD_ST; + + port->cmd &= ~SCMD_ST; + while(port->cmd & SCMD_CR) + { + sleep(1000); + } + + port->cmd &= ~SCMD_FRE; + while(port->cmd & SCMD_FR) + { + sleep(1000); + } + + port->cmd &= ~SCMD_FRE; +} + +void port_rebase(hba_port_t* port) +{ + port_stop(port); + + + port->clb = (u64)lvalloc(4096); + port->fb = (u64)lvalloc(4096); + + for(u64 i = 0; i < 32; i++) + { + hba_cmd_header_t* cmdhdr = &((hba_cmd_header_t*)port->clb)[i]; + + cmdhdr->prdtl = 8; + cmdhdr->ctba = (u64)lvalloc(4096); + } + + port_start(port); +} + +hba_port_t* ahci_get_sata() +{ + return s_ahci.sata; +} + +hba_port_t* ahci_get_atapi() +{ + return s_ahci.atapi; +} + +void ahci_init() +{ + pci_device_t ahci; + u32 bar; + + //Use PCI + ahci = pci_find_device(0x01,0x06); + if(ahci == 0) + { + kprintf("AHCI not found!\n"); + return; + } + bar = pci_read_config_word_dev(ahci,0x24); + s_ahci.hba_phys = (u64)(bar & 0xFFFFFFF0); + + kprintf("HBA %x\n",s_ahci.hba_phys); + //Identity map + page_map((void*)s_ahci.hba_phys,(void*)s_ahci.hba_phys, + 16384); + HBA = (hba_mem_t*)s_ahci.hba_phys; + + HBA->ghc |= (1<<31); //Enable GHC.AE + if(HBA->cap & (1<<27)) + { + kprintf("AHCI supports stagered spin-up\n"); + } + if(HBA->cap & (1<<31)) + { + kprintf("AHCI supports 64-bit mode\n"); + } + + s_ahci.sata = NULL; + s_ahci.atapi = NULL; + //kprintf("pi %x\n",HBA->pi); + for(u32 i = 0; i < 32; i++) + { + hba_port_t* port = &HBA->ports[i]; + if(!((HBA->pi>>i)&1)) continue; + switch(port->sig) + { + case SATA_SIG_ATA: s_ahci.sata = port; break; + case SATA_SIG_ATAPI: s_ahci.atapi = port; break; + } + + if(port->cmd & (SCMD_ST|SCMD_FR|SCMD_CR|SCMD_FRE)) //Isn't IDLE + { + port->cmd &= ~SCMD_ST; + while(port->cmd & SCMD_CR) + { + sleep(1000); + } + + port->cmd &= ~SCMD_FRE; + while(port->cmd & SCMD_FR) + { + sleep(1000); + } + } + + //spin-up + port->cmd |= (1<<1); + + //Start it again + //port->cmd |= SCMD_ST|SCMD_FRE|(1<<2); + + //Initialize port + port_rebase(port); + + port->is = 0xFFFFFFFF; //RWC + //port->is = 0xFD8000AF; + + //power on + port->cmd |= (1<<2); + } + + s_ahci.buf = (u16*)lvalloc(4096); + + ahci_identify(s_ahci.sata); +} diff --git a/kernel/ahci.h b/kernel/ahci.h new file mode 100644 index 0000000..c1a3069 --- /dev/null +++ b/kernel/ahci.h @@ -0,0 +1,326 @@ +#ifndef __AHCI_H +#define __AHCI_H + +#include "os.h" + +#define SATA_SIG_ATA 0x00000101 // SATA drive +#define SATA_SIG_ATAPI 0xEB140101 // SATAPI drive +#define SATA_SIG_SEMB 0xC33C0101 // Enclosure management bridge +#define SATA_SIG_PM 0x96690101 // Port multiplier + +#define ATA_DEV_BUSY (1<<7) +#define ATA_DEV_DRQ (1<<3) + +typedef struct { + //u32 clb; // 0x00, command list base address, 1K-byte aligned + //u32 clbu; // 0x04, command list base address upper 32 bits + u64 clb; + u64 fb; + + u32 is; // 0x10, interrupt status + u32 ie; // 0x14, interrupt enable + u32 cmd; // 0x18, command and status + u32 rsv0; // 0x1C, Reserved + u32 tfd; // 0x20, task file data + u32 sig; // 0x24, signature + u32 ssts; // 0x28, SATA status (SCR0:SStatus) + u32 sctl; // 0x2C, SATA control (SCR2:SControl) + u32 serr; // 0x30, SATA error (SCR1:SError) + u32 sact; // 0x34, SATA active (SCR3:SActive) + u32 ci; // 0x38, command issue + u32 sntf; // 0x3C, SATA notification (SCR4:SNotification) + u32 fbs; // 0x40, FIS-based switch control + u32 rsv1[11]; // 0x44 ~ 0x6F, Reserved + u32 vendor[4]; // 0x70 ~ 0x7F, vendor specific +} hba_port_t; + +typedef struct +{ + // 0x00 - 0x2B, Generic Host Control + u32 cap; // 0x00, Host capability + u32 ghc; // 0x04, Global host control + u32 is; // 0x08, Interrupt status + u32 pi; // 0x0C, Port implemented + u32 vs; // 0x10, Version + u32 ccc_ctl; // 0x14, Command completion coalescing control + u32 ccc_pts; // 0x18, Command completion coalescing ports + u32 em_loc; // 0x1C, Enclosure management location + u32 em_ctl; // 0x20, Enclosure management control + u32 cap2; // 0x24, Host capabilities extended + u32 bohc; // 0x28, BIOS/OS handoff control and status + + // 0x2C - 0x9F, Reserved + u8 rsv[116]; + + // 0xA0 - 0xFF, Vendor specific registers + u8 vendor[96]; + + // 0x100 - 0x10FF, Port control registers + hba_port_t ports[32]; +} hba_mem_t; + +typedef enum +{ + FIS_TYPE_REG_H2D = 0x27, // Register FIS - host to device + FIS_TYPE_REG_D2H = 0x34, // Register FIS - device to host + FIS_TYPE_DMA_ACT = 0x39, // DMA activate FIS - device to host + FIS_TYPE_DMA_SETUP = 0x41, // DMA setup FIS - bidirectional + FIS_TYPE_DATA = 0x46, // Data FIS - bidirectional + FIS_TYPE_BIST = 0x58, // BIST activate FIS - bidirectional + FIS_TYPE_PIO_SETUP = 0x5F, // PIO setup FIS - device to host + FIS_TYPE_DEV_BITS = 0xA1, // Set device bits FIS - device to host +} fis_type_t; + +typedef struct +{ + // DWORD 0 + u8 fis_type; // FIS_TYPE_REG_H2D + + u8 pmport:4; // Port multiplier + u8 rsv0:3; // Reserved + u8 c:1; // 1: Command, 0: Control + + u8 command; // Command register + u8 featurel; // Feature register, 7:0 + + // DWORD 1 + u8 lba0; // LBA low register, 7:0 + u8 lba1; // LBA mid register, 15:8 + u8 lba2; // LBA high register, 23:16 + u8 device; // Device register + + // DWORD 2 + u8 lba3; // LBA register, 31:24 + u8 lba4; // LBA register, 39:32 + u8 lba5; // LBA register, 47:40 + u8 featureh; // Feature register, 15:8 + + // DWORD 3 + u8 countl; // Count register, 7:0 + u8 counth; // Count register, 15:8 + u8 icc; // Isochronous command completion + u8 control; // Control register + + // DWORD 4 + u8 rsv1[4]; // Reserved +} fis_reg_h2d_t; + +typedef struct +{ + // DWORD 0 + u8 fis_type; // FIS_TYPE_REG_D2H + + u8 pmport:4; // Port multiplier + u8 rsv0:2; // Reserved + u8 i:1; // Interrupt bit + u8 rsv1:1; // Reserved + + u8 status; // Status register + u8 error; // Error register + + // DWORD 1 + u8 lba0; // LBA low register, 7:0 + u8 lba1; // LBA mid register, 15:8 + u8 lba2; // LBA high register, 23:16 + u8 device; // Device register + + // DWORD 2 + u8 lba3; // LBA register, 31:24 + u8 lba4; // LBA register, 39:32 + u8 lba5; // LBA register, 47:40 + u8 rsv2; // Reserved + + // DWORD 3 + u8 countl; // Count register, 7:0 + u8 counth; // Count register, 15:8 + u8 rsv3[2]; // Reserved + + // DWORD 4 + u8 rsv4[4]; // Reserved +} fis_reg_d2h_t; + +typedef struct +{ + // DWORD 0 + u8 fis_type; // FIS_TYPE_DATA + + u8 pmport:4; // Port multiplier + u8 rsv0:4; // Reserved + + u8 rsv1[2]; // Reserved + + // DWORD 1 ~ N + u32 data[1]; // Payload +} fis_data_t; + +typedef struct +{ + // DWORD 0 + u8 fis_type; // FIS_TYPE_PIO_SETUP + + u8 pmport:4; // Port multiplier + u8 rsv0:1; // Reserved + u8 d:1; // Data transfer direction, 1 - device to host + u8 i:1; // Interrupt bit + u8 rsv1:1; + + u8 status; // Status register + u8 error; // Error register + + // DWORD 1 + u8 lba0; // LBA low register, 7:0 + u8 lba1; // LBA mid register, 15:8 + u8 lba2; // LBA high register, 23:16 + u8 device; // Device register + + // DWORD 2 + u8 lba3; // LBA register, 31:24 + u8 lba4; // LBA register, 39:32 + u8 lba5; // LBA register, 47:40 + u8 rsv2; // Reserved + + // DWORD 3 + u8 countl; // Count register, 7:0 + u8 counth; // Count register, 15:8 + u8 rsv3; // Reserved + u8 e_status; // New value of status register + + // DWORD 4 + u16 tc; // Transfer count + u8 rsv4[2]; // Reserved +} fis_pio_setup_t; + +typedef struct +{ + // DWORD 0 + u8 fis_type; // FIS_TYPE_DMA_SETUP + + u8 pmport:4; // Port multiplier + u8 rsv0:1; // Reserved + u8 d:1; // Data transfer direction, 1 - device to host + u8 i:1; // Interrupt bit + u8 a:1; // Auto-activate. Specifies if DMA Activate FIS is needed + + u8 rsved[2]; // Reserved + + //DWORD 1&2 + + u64 DMAbufferID; // DMA Buffer Identifier. Used to Identify DMA buffer in host memory. SATA Spec says host specific and not in Spec. Trying AHCI spec might work. + + //DWORD 3 + u32 rsvd; //More reserved + + //DWORD 4 + u32 DMAbufOffset; //Byte offset into buffer. First 2 bits must be 0 + + //DWORD 5 + u32 TransferCount; //Number of bytes to transfer. Bit 0 must be 0 + + //DWORD 6 + u32 resvd; //Reserved + +} fis_dma_setup_t; + +typedef struct +{ + // 0x00 + fis_dma_setup_t dsfis; // DMA Setup FIS + u8 pad0[4]; + + // 0x20 + fis_pio_setup_t psfis; // PIO Setup FIS + u8 pad1[12]; + + // 0x40 + fis_reg_d2h_t rfis; // Register – Device to Host FIS + u8 pad2[4]; + + // 0x58 + u64 sdbfis; // Set Device Bit FIS + + // 0x60 + u8 ufis[64]; + + // 0xA0 + u8 rsv[0x100-0xA0]; +} hba_fis_t; + +typedef struct +{ + // DW0 + u8 cfl:5; // Command FIS length in DWORDS, 2 ~ 16 + u8 a:1; // ATAPI + u8 w:1; // Write, 1: H2D, 0: D2H + u8 p:1; // Prefetchable + + u8 r:1; // Reset + u8 b:1; // BIST + u8 c:1; // Clear busy upon R_OK + u8 rsv0:1; // Reserved + u8 pmp:4; // Port multiplier port + + u16 prdtl; // Physical region descriptor table length in entries + + // DW1 + u32 prdbc; // Physical region descriptor byte count transferred + + // DW2, 3 + //u32 ctba; // Command table descriptor base address + //u32 ctbau; // Command table descriptor base address upper 32 bits + u64 ctba; + + // DW4 - 7 + u32 rsv1[4]; // Reserved +} hba_cmd_header_t; + +typedef struct +{ + //u32 dba; // Data base address + //u32 dbau; // Data base address upper 32 bits + u64 dba; + u32 rsv0; // Reserved + + // DW3 + u32 dbc:22; // Byte count, 4M max + u32 rsv1:9; // Reserved + u32 i:1; // Interrupt on completion +} hba_prdt_entry_t; + +typedef struct +{ + // 0x00 + u8 cfis[64]; // Command FIS + + // 0x40 + u8 acmd[16]; // ATAPI command, 12 or 16 bytes + + // 0x50 + u8 rsv[48]; // Reserved + + // 0x80 + hba_prdt_entry_t prdt_entry[1]; // Physical region descriptor table entries, 0 ~ 65535 +} hba_cmd_tbl_t; + +u64 ahci_read_sectors(hba_port_t* port,u64 lba,u64 sectors, + u64 __phys buf); + +u64 ahci_identify(hba_port_t* port); + +hba_port_t* ahci_get_sata(); +hba_port_t* ahci_get_atapi(); + +void ahci_init(); + +#define AHCI_CLB_SIZE ((sizeof(hba_cmd_header_t)*32)+4096) +#define AHCI_FB_SIZE ((sizeof(hba_fis_t)*32)+4096) + +#define SCMD_ST (1<<0) +#define SCMD_CR (1<<15) +#define SCMD_FR (1<<14) +#define SCMD_FRE (1<<4) + +#define ATA_LBA_MODE 0x40 +#define ATA_CMD_IDENTIFY 0xEC +#define ATA_CMD_READ_DMA_EX 0x25 + +#endif diff --git a/kernel/bmp.c b/kernel/bmp.c new file mode 100644 index 0000000..eb5d376 --- /dev/null +++ b/kernel/bmp.c @@ -0,0 +1,51 @@ +#include "bmp.h" +#include "heap.h" +#include "video.h" +#include "stdlib.h" +#include "defines.h" + +void bmp_draw(u64 px,u64 py,u64 w,u64 h,u8* bmp) +{ + u32 offbits = *(u32*)(bmp+0x0A); + u64 bw,bh,stride; + u64 bc; + u8* bmap = bmp+offbits; + + w = MIN(w,lmem->v_width); + h = MIN(h,lmem->v_height); + + bw = *(u32*)(bmp+0x12); + bh = *(u32*)(bmp+0x16); + bc = *(u16*)(bmp+0x1C)>>3; + + stride = ROUND2_UP((bw*bc),2); + + u64 f_w,f_h; + if(!w) f_w = 0x00010000; + else f_w = (w<<32) / (bw<<16); + if(!h) f_h = 0x00010000; + else f_h = (h<<32) / (bh<<16); + + u64 c_y = 0; + for(u64 y = 0; y < bh; y++) + { + u64 c_x = 0; + u8* line = &bmap[(bh-y-1)*stride]; + for(u64 x = 0; x < bw; x++) + { + u8 r,g,b; + r = *line++; + g = *line++; + b = *line++; + u32 color = (b<<16|g<<8|r); + for(u64 i = 0; i < (f_w>>16); i++) + { + video_pixel(px+c_x+i,py+c_y,color); + for(u64 j = 1; j < (f_h>>16); j++) + video_pixel(px+c_x+i,py+c_y+j,color); + } + c_x = ((c_x<<16) + f_w) >> 16; + } + c_y = ((c_y<<16) + f_h) >> 16; + } +} diff --git a/kernel/bmp.h b/kernel/bmp.h new file mode 100644 index 0000000..56d5eb9 --- /dev/null +++ b/kernel/bmp.h @@ -0,0 +1,8 @@ +#ifndef __BMP_H +#define __BMP_H + +#include "os.h" + +void bmp_draw(u64 px,u64 py,u64 w,u64 h,u8* bmp); + +#endif diff --git a/kernel/defines.h b/kernel/defines.h new file mode 100644 index 0000000..c9f187f --- /dev/null +++ b/kernel/defines.h @@ -0,0 +1,10 @@ +#ifndef __DEFINES_H +#define __DEFINES_H + +#define ROUND2_UP(val,bit) (( (val>>bit) \ + + ( (val&((1<= 26) return NULL; + return &s_diskhost.disk[idx]; +} + +u32 disk_available() +{ + u32 disks; + for(u64 i = 0; i < 26; i++) + { + if(s_diskhost.disk[i].phys.type != DISK_INVALID) + disks |= (1<phys.type) + { + case DISK_INVALID: break; + case DISK_AHCI: + do { + ret = ahci_read_sectors(disk->phys.hba_port,lba,sectors, + (u64)page_v2p((void*)buf)); + if(ret) sleep(1000); + } while(ret != 0 || attempts++ < 2); + break; + } + return (attempts == 2); +} + +u64 disk_write_ex(disk_t* disk,u64 lba,u64 sectors,void* __virt buf) +{ + u64 ret,attempts = 0; + switch(disk->phys.type) + { + case DISK_INVALID: break; + case DISK_AHCI: + do { + ret = ahci_read_sectors(disk->phys.hba_port,lba,sectors, + (u64)page_v2p((void*)buf)); + if(ret) sleep(1000); + } while(ret != 0 || attempts++ < 2); + break; + } + return (attempts == 2); +} + +u64 disk_read(disk_t* disk,u64 lba,u64 sectors,void* __virt buf) +{ + kmemzero(buf,sectors<<9); + if((lba+sectors) >= disk->parts[disk->cur_part].lba_num) + { + kprintf("disk_read out of bounds!\n"); + return 1; + } + + return disk_read_ex(disk,lba+(u64)disk->parts[disk->cur_part].lba_start, + sectors,buf); +} + +u64 disk_write(disk_t* disk,u64 lba,u64 sectors,void* __virt buf) +{ + if((lba+sectors) >= disk->parts[disk->cur_part].lba_num) + { + kprintf("disk_write out of bounds!\n"); + return 1; + } + + return disk_write_ex(disk,lba+(u64)disk->parts[disk->cur_part].lba_start, + sectors,buf); +} + +void disk_setup(disk_t* disk) +{ + disk->phys_totalsectors = ahci_identify(disk->phys.hba_port); + disk_read_ex(disk,0,1,mbr); + + kmemcpy(&disk->uid,&mbr[0x1B4],10); + kmemcpy(disk->parts,&mbr[0x1BE],64); + + //Determine which partition we should use + disk->cur_part = 0; + do { + disk_read(disk,0,1,mbr); + if(!kmemcmp((char*)&mbr[71],"DISK1",5)) + { + //That's FAT32 + break; + } + disk->cur_part = disk->cur_part + 1; + } while(disk->cur_part < 4); +} + +void disk_init() +{ + disk_t* disk; + + //s_diskhost.mbr = (u8*)lvalloc(4096); + //kmemzero(&s_diskhost,sizeof(s_diskhost)); + ahci_init(); + + //SATA (D) + disk = &s_diskhost.disk[disk_chr2idx('D')]; + disk->phys.type = DISK_AHCI; + disk->phys.hba_port = ahci_get_sata(); + //get sectors + + //ATAPI (E) + disk = &s_diskhost.disk[disk_chr2idx('E')]; + disk->phys.type = DISK_AHCI; + disk->phys.hba_port = ahci_get_atapi(); +} diff --git a/kernel/disk.h b/kernel/disk.h new file mode 100644 index 0000000..e904a72 --- /dev/null +++ b/kernel/disk.h @@ -0,0 +1,50 @@ +#ifndef __DISK_H +#define __DISK_H + +#include "os.h" +#include "ahci.h" + +typedef enum { + DISK_INVALID = 0, + DISK_AHCI = 1, +} disk_type_t; + +struct disk_phys_t { + disk_type_t type; + union { + hba_port_t* hba_port; + }; +}; + +typedef struct { + u8 attributes; + u8 chs_start[3]; + + u8 type; + u8 chs_last[3]; + + u32 lba_start; + u32 lba_num; +} __packed partition_t; + +typedef struct { + struct disk_phys_t phys; + char disk_name; //ASCII char A-Z + u64 phys_totalsectors; + u8 uid[10]; + partition_t parts[4]; + u64 cur_part; +} disk_t; + +disk_t* disk_get(char name); +u32 disk_available(); //return bitmap A-Z (26 bits) +u64 disk_read_ex(disk_t* disk,u64 lba,u64 sectors,void* __virt buf); +u64 disk_write_ex(disk_t* disk,u64 lba,u64 sectors,void* __virt buf); + +u64 disk_read(disk_t* disk,u64 lba,u64 sectors,void* __virt buf); +u64 disk_write(disk_t* disk,u64 lba,u64 sectors,void* __virt buf); + +void disk_setup(disk_t* disk); +void disk_init(); + +#endif diff --git a/kernel/exceptions.c b/kernel/exceptions.c new file mode 100644 index 0000000..8ac6f4f --- /dev/null +++ b/kernel/exceptions.c @@ -0,0 +1,141 @@ +#include "exceptions.h" +#include "vga_terminal.h" +#include "stdlib.h" +#include "idt.h" +#include "pit.h" +//#include "x86utils.h" + +/* We need to implement those excpetions: + * 0 Division by zero + * 3 Breakpoint + * 6 Invalid opcode + * 7 Device not available + * 8 Double Fault + * 10 Invalid TSS + * 11 Segment not present + * 12 Stack segment fault + * 13 General protection fault + * 14 Page fault + * + */ + +static void hang() +{ + //x86_print_regs(); + while(1){__asm("nop");} +} + +//extern void command_interpreter(); +//extern void _load_legacy_stack(); + +void _enter_rescue_mode() +{ + /*_load_legacy_stack(); + sleep(500); + command_interpreter();*/ +} + +void enter_rescue_mode(int skip_check) +{ + if(!skip_check) + { + chg_color(VGA_COLOR_LIGHT_CYAN); + kprintf("Rollback to terminal? (y - yes, n - no): "); + u8 ans = kgetc(); + if(ans == 'y' || skip_check) + { + kputc('\n'); + chg_color(VGA_COLOR_MAGENTA); + _enter_rescue_mode(); + } + chg_color(VGA_COLOR_MAGENTA); + } + else + { + cls(); + kprintf("Terminal reloaded\n"); + _enter_rescue_mode(); + } +} + +void exception0() +{ + kprintf("[Exception] Division by zero\n"); + hang(); +} + +void exception3() +{ + kprintf("[Exception] Debug\n"); + hang(); +} + +void exception6() +{ + kprintf("[Exception] Invalid opcode\n"); + hang(); +} + +void exception7() +{ + kprintf("[Exception] Device not available\n"); + hang(); +} + +void exception8() +{ + kprintf("[Exception] Double fault\n"); + hang(); +} + +void exception10() +{ + kprintf("[Exception] Invalid TSS\n"); + hang(); +} + +void exception11() +{ + kprintf("[Exception] Segment not present\n"); + hang(); +} + +void exception12() +{ + kprintf("[Exception] Stack segment fault\n"); + hang(); +} + +extern u64 x64_get_cr2(); + +void exception13() +{ + kprintf("[Exception] General protection fault (%x)\n", + x64_get_cr2()); + hang(); +} + +void exception14() +{ + //x64_rax_n_stop(x64_get_cr2()); + kprintf("[Exception] Page fault (%x)\n",x64_get_cr2()); + //x86_print_regs(); + //Do we want to rollback in command interpreter + + enter_rescue_mode(0); + while(1){__asm("hlt");} +} + +void install_exceptions() +{ + idt_set_handler(0,exception0,IDT_TYPE_TRAP); + idt_set_handler(3,exception3,IDT_TYPE_TRAP); + idt_set_handler(6,exception6,IDT_TYPE_TRAP); + idt_set_handler(7,exception7,IDT_TYPE_TRAP); + idt_set_handler(8,exception8,IDT_TYPE_TRAP); + idt_set_handler(10,exception10,IDT_TYPE_TRAP); + idt_set_handler(11,exception11,IDT_TYPE_TRAP); + idt_set_handler(12,exception12,IDT_TYPE_TRAP); + idt_set_handler(13,exception13,IDT_TYPE_TRAP); + idt_set_handler(14,exception14,IDT_TYPE_TRAP); +} diff --git a/kernel/exceptions.h b/kernel/exceptions.h new file mode 100644 index 0000000..42f6e49 --- /dev/null +++ b/kernel/exceptions.h @@ -0,0 +1,9 @@ +#ifndef __EXCEPTIONS_H +#define __EXCEPTIONS_H + +#include "os.h" + +void enter_rescue_mode(); +void install_exceptions(); + +#endif diff --git a/kernel/fat.c b/kernel/fat.c new file mode 100644 index 0000000..3ed2875 --- /dev/null +++ b/kernel/fat.c @@ -0,0 +1,331 @@ +#include "fat.h" +#include "string.h" +#include "stdlib.h" +#include "lvalloc.h" +#include "defines.h" + +fat_t g_fat; + +void fat_read_cluster(fat_t* fat,u32 clus) +{ + if(!IS_VALID_FAT(fat)) return; + + disk_read(fat->disk,fat->datasec+((clus-2)*fat->spc),fat->spc, + fat->clusbuf); +} + +static u32 fat_dir_clus(fat_dir_t* dir) +{ + return (dir->dir_fstclushi<<16)|dir->dir_fstcluslo; +} + +static u32 fat_dir_or_root_clus(fat_t* fat,fat_dir_t* dir) +{ + if(dir != NULL) + return fat_dir_clus(dir); + return fat->rootclus; +} + +u32 fat_table_read_entry(fat_t* fat,u32 idx) +{ + //Do some caching + u32 clus = idx / fat->fatentperclus; + u32 offset = idx % fat->fatentperclus; + + //if(!IS_VALID_FAT(fat)) return 0; + + //kprintf("entry clus %u offset %u\n", + // fat->fatsec+(clus*fat->spc),offset); + if(clus == fat->curfatclus) + { + disk_read(fat->disk,fat->fatsec+(clus*fat->spc),fat->spc,fat->fatbuf); + fat->curfatclus = clus; + } + + idx = FAT_CLUSTER(fat->fatbuf[offset]); + //kprintf("fat->fatbuf[offset] %u\n",idx); + //kprintf("%p\n",fat->fatbuf); + return FAT_CLUSTER(fat->fatbuf[offset]); + //kprintf("fat->fatbuf[offset] %u\n",(u64)FAT_CLUSTER(fat->fatbuf[offset])); + //return FAT_CLUSTER(fat->fatbuf[offset]); +} + +void fat_read_file(fat_t* fat,fat_dir_t* file,u8* __virt buf) +{ + if(!IS_VALID_FAT(fat)) return; + + u32 clus = fat_dir_clus(file); + u32 size = file->dir_filesize; + u32 csize = fat->bps*fat->spc; + do { + u32 _size = MIN(size,csize); + + fat_read_cluster(fat,clus); + kmemcpy(buf,fat->clusbuf,_size); + buf += _size; + size -= _size; + + clus = fat_table_read_entry(fat,clus); + } while(!IS_FAT_CLUS_EOF(clus)); +} + +void fat_nametofmt38(const char* name,char* out) +{ + char* d = out; + const char* s = name; + size_t slen = kstrlen(name); + + for(u64 i = 0; i < 11; i++) + out[i] = ' '; + while(*s != '.' && (size_t)(d-out) < slen) + *d++ = ktoupper(*s++); + if((d-out) == 11) return; + d = &out[8]; + s++; + for(u64 i = 0; i < 3 && *s; i++) + *d++ = ktoupper(*s++); +} + +void fat_fmt38toname(const char* name,char* out) +{ + char* d = out; + const char* s = name; + + for(u64 i = 0; *s != ' ' && i < 11; i++) + *d++ = *s++; + if(name[8] != ' ' || name[9] != ' ' || name[10] != ' ') + { + *d++ = '.'; + s = &name[8]; + for(u64 i = 0; i < 3 && *s != ' '; i++) + *d++ = *s++; + } + *d++ = '\0'; +} + +int fat_is_valid_file(fat_dir_t* file) +{ + if(file->dir_name[0] != 0 && file->dir_name[0] != (char)0xE5 + && file->dir_attr != FAT_ATTR_LONG_NAME + && file->dir_attr != FAT_ATTR_VOLUME_ID) + { + return 1; + } + return 0; +} + +u64 fat_first_file(fat_t* fat,fat_dir_t* parent,fat_dir_t* file, + char* longname) +{ + char* d; + int load_long = 1; + + u32 dir_clus = fat_dir_or_root_clus(fat,parent); + do { + fat_read_cluster(fat,dir_clus); + for(u32 i = 0; i < fat->dirsperclus; i++) + { + union { + fat_dir_t* file; + fat_ldir_t* ldir; + } tmp; + tmp.file = &((fat_dir_t*)fat->clusbuf)[i]; + if(tmp.ldir->ldir_attr == FAT_ATTR_LONG_NAME && load_long) + { + if(IS_FAT_LDIR_LAST(tmp.ldir->ldir_ord)) + { + tmp.ldir->ldir_ord &= ~(1<<6); + load_long = 0; + } + d = longname+(13*(tmp.ldir->ldir_ord-1)); + for(u32 j = 0; j < 5; j++) + { + if(tmp.ldir->ldir_name1[j] == 0xFFFF) + { + load_long = 0; + continue; + } + *d++ = DBCS2SBCS(tmp.ldir->ldir_name1[j]); + } + for(u32 j = 0; j < 6; j++) + { + if(tmp.ldir->ldir_name2[j] == 0xFFFF) + { + load_long = 0; + continue; + } + *d++ = DBCS2SBCS(tmp.ldir->ldir_name2[j]); + } + for(u32 j = 0; j < 2; j++) + { + if(tmp.ldir->ldir_name3[j] == 0xFFFF) + { + load_long = 0; + continue; + } + *d++ = DBCS2SBCS(tmp.ldir->ldir_name3[j]); + } + } + else if(fat_is_valid_file(tmp.file)) + { + kmemcpy(file,tmp.file,sizeof(fat_dir_t)); + return ((u64)dir_clus<<32)|(i+1); + } + } + + dir_clus = fat_table_read_entry(fat,dir_clus); + } while(!IS_FAT_CLUS_EOF(dir_clus)); + return 0; +} + +u64 fat_next_file(fat_t* fat,u64 val,fat_dir_t* file,char* longname) +{ + char* d; + int load_long = 1; + + u32 dir_clus = val>>32; + u32 offset = val&0xFFFFFFFF; + if(offset == fat->dirsperclus) + { + offset = 0; + dir_clus = fat_table_read_entry(fat,dir_clus); + } + + while(!IS_FAT_CLUS_EOF(dir_clus)) + { + u32 i = 0; + if(offset) + { + i = offset; + offset = 0; + } + + fat_read_cluster(fat,dir_clus); + for(;i < fat->dirsperclus; i++) + { + union { + fat_dir_t* file; + fat_ldir_t* ldir; + } tmp; + tmp.file = &((fat_dir_t*)fat->clusbuf)[i]; + if(tmp.ldir->ldir_attr == FAT_ATTR_LONG_NAME && load_long) + { + if(IS_FAT_LDIR_LAST(tmp.ldir->ldir_ord)) + { + tmp.ldir->ldir_ord &= ~(1<<6); + load_long = 0; + } + d = longname+(13*(tmp.ldir->ldir_ord-1)); + for(u32 j = 0; j < 5; j++) + { + if(tmp.ldir->ldir_name1[j] == 0xFFFF) + { + load_long = 0; + continue; + } + *d++ = DBCS2SBCS(tmp.ldir->ldir_name1[j]); + } + for(u32 j = 0; j < 6; j++) + { + if(tmp.ldir->ldir_name2[j] == 0xFFFF) + { + load_long = 0; + continue; + } + *d++ = DBCS2SBCS(tmp.ldir->ldir_name2[j]); + } + for(u32 j = 0; j < 2; j++) + { + if(tmp.ldir->ldir_name3[j] == 0xFFFF) + { + load_long = 0; + continue; + } + *d++ = DBCS2SBCS(tmp.ldir->ldir_name3[j]); + } + } + else if(fat_is_valid_file(tmp.file)) + { + kmemcpy(file,tmp.file,sizeof(fat_dir_t)); + return ((u64)dir_clus<<32)|(i+1); + } + } + + dir_clus = fat_table_read_entry(fat,dir_clus); + } + return 0; +} + +int fat_find_file(fat_t* fat,fat_dir_t* parent,char* name, + fat_dir_t* out) +{ + u64 handle; + fat_dir_t file; + char longname[256]; + char name38[11]; + if(!IS_VALID_FAT(fat)) return 0; + fat_nametofmt38(name,name38); + + kmemzero(longname,sizeof(longname)); + handle = fat_first_file(fat,parent,&file,longname); + if(handle) + { + do { + if(*longname != '\0') + { + if(!kstrcmp(longname,name)) + { + kmemcpy(out,&file,sizeof(fat_dir_t)); + return 1; + } + } + else + { + if(!kmemcmp(file.dir_name,name38,11)) + { + kmemcpy(out,&file,sizeof(fat_dir_t)); + return 1; + } + } + kmemzero(longname,sizeof(longname)); + } while((handle = fat_next_file(fat,handle,&file,longname))); + } + + return 0; +} + +void fat_init(fat_t* fat,disk_t* disk) +{ + fat->disk = disk; + fat->secbuf = (u8*)lvalloc(4096); + + if(disk_read(fat->disk,0,1,fat->secbuf)) + { + kprintf("Failed to init fat!\n"); + fat->disk = NULL; + return; + } + + fat->bps = *(u16*)(&fat->secbuf[11]); + fat->spc = *(u8*)(&fat->secbuf[13]); + fat->rsvdsec = *(u16*)(&fat->secbuf[14]); + fat->fatnum = *(u8*)(&fat->secbuf[16]); + + fat->rootentcnt = *(u16*)(&fat->secbuf[17]); + fat->totsec = *(u32*)(&fat->secbuf[32]); + fat->fatsz = *(u32*)(&fat->secbuf[36]); + fat->rootclus = *(u32*)(&fat->secbuf[44]); + + fat->clusbuf = (u8*)lvalloc(fat->spc*fat->bps); + fat->fatbuf = (u32*)lvalloc(fat->spc*fat->bps); + + fat->fatsec = fat->rsvdsec; + fat->datasec = fat->fatsec+(fat->fatsz*fat->fatnum); + + fat->fatentperclus = (fat->bps>>2)*fat->spc; + fat->dirsperclus = (fat->bps>>5)*fat->spc; + + fat->cursec = 0; + fat->curclus = 0; + fat->curfatclus = 0; +} diff --git a/kernel/fat.h b/kernel/fat.h new file mode 100644 index 0000000..f80f0a6 --- /dev/null +++ b/kernel/fat.h @@ -0,0 +1,102 @@ +#ifndef __FAT_H +#define __FAT_H + +#include "os.h" +#include "disk.h" +#include "string.h" + +#define FAT_BAD_CLUSTER 0xFFFFFF7 +#define IS_FAT_CLUS_RESVD(a) (a >= 0xFFFFFF8 && a <= 0xFFFFFFE) +#define FAT_END_CLUSTER 0xFFFFFFF + +#define FAT_CLUSTER(a) (a&0x0FFFFFFF) +#define IS_FAT_CLUS_EOF(clus) ((clus >= FAT_BAD_CLUSTER) || (clus == 0)) + +#define FAT_ATTR_READONLY 0x01 +#define FAT_ATTR_HIDDEN 0x02 +#define FAT_ATTR_SYSTEM 0x04 +#define FAT_ATTR_VOLUME_ID 0x08 +#define FAT_ATTR_DIRECTORY 0x10 +#define FAT_ATTR_ARCHIVE 0x20 +#define FAT_ATTR_LONG_NAME (FAT_ATTR_READONLY \ + |FAT_ATTR_HIDDEN \ + |FAT_ATTR_SYSTEM \ + |FAT_ATTR_VOLUME_ID) + +#define IS_VALID_FAT(fat) (fat->disk != NULL) + +typedef struct { + disk_t* disk; + + u32 bps; //11 2 + u32 spc; //13 1 + u32 rsvdsec; //14 2 + u32 fatnum; //16 1 + + u32 rootentcnt; //17 2 + u32 totsec; //32 4 + u32 fatsz; //36 4 + u32 rootclus; //44 4 + + u32 fatentperclus; + u32 dirsperclus; + + u32 fatsec; + u32 datasec; + + u8* secbuf; + u8* clusbuf; + u8* clusbuf_ex; + u32* fatbuf; + + u32 cursec; + u32 curclus; + u32 curfatclus; +} fat_t; + +typedef struct { + char dir_name[11]; + u8 dir_attr; + u8 dir_ntres; + u8 dir_crttimetenth; + u16 dir_crttime; + u16 dir_crtdate; + u16 dir_lstaccdate; + u16 dir_fstclushi; + u16 dir_wrttime; + u16 dir_wrtdate; + u16 dir_fstcluslo; + u32 dir_filesize; +} __packed fat_dir_t; + +#define IS_FAT_LDIR_LAST(ord) (ord&0x40) + +typedef struct { + u8 ldir_ord; + dbcs_t ldir_name1[5]; + u8 ldir_attr; + u8 ldir_type; + u8 ldir_chksum; + dbcs_t ldir_name2[6]; + u16 ldir_fstcluslo; + dbcs_t ldir_name3[2]; +} __packed fat_ldir_t; + +void fat_init(fat_t* fat,disk_t* disk); + +void fat_read_cluster(fat_t* fat,u32 clus); +u32 fat_table_read_entry(fat_t* fat,u32 idx); +void fat_read_file(fat_t* fat,fat_dir_t* file,u8* __virt buf); +void fat_nametofmt38(const char* name,char* out); +void fat_fmt38toname(const char* name,char* out); +int fat_is_valid_file(fat_dir_t* file); + +u64 fat_first_file(fat_t* fat,fat_dir_t* parent,fat_dir_t* file, + char* longname); +u64 fat_next_file(fat_t* fat,u64 val,fat_dir_t* file,char* longname); +int fat_find_file(fat_t* fat,fat_dir_t* parent,char* name, + fat_dir_t* out); + +extern fat_t g_fat; + +#endif diff --git a/kernel/file.c b/kernel/file.c new file mode 100644 index 0000000..d942c41 --- /dev/null +++ b/kernel/file.c @@ -0,0 +1,86 @@ +#include "file.h" +#include "stdlib.h" +#include "string.h" +#include "defines.h" +#include "heap.h" + +// /dir/file.txt + +static int file_find(fat_t* fat,fat_dir_t* out,const char* filename) +{ + char name[512]; + const char* s = filename; + char* d = name; + fat_dir_t _parent; + fat_dir_t file; + fat_dir_t* parent; + + parent = NULL; + kmemzero(&file,sizeof(file)); + kmemzero(&_parent,sizeof(_parent)); + kmemzero(name,sizeof(name)); + do { + if(*s != '/') + *d++ = *s; + s++; + if(*s == '/') + { + //kprintf("name %s\n",name); + //Find directory + if(kstrchr(s+1,'/')) + { + fat_find_file(fat,parent,name,&_parent); + if(_parent.dir_fstcluslo == 0) return 0; + } + kmemzero(name,sizeof(name)); + d = name; + } + if(!kstrchr(s+1,'/')) //Check if we hit file name + { + fat_find_file(fat,parent,name,&file); + if(file.dir_fstcluslo != 0) + { + //kprintf("file %s\n",name); + kmemcpy(out,&file,sizeof(file)); + return 1; + } + } + } while(*s); + return 0; +} + +void* file_load(fat_t* fat,u32* psize,const char* name) +{ + fat_dir_t file; + u32 clus; + u32 size; + u8* buf,*ptr; + kmemzero(&file,sizeof(file)); + if(!file_find(fat,&file,name)) + { + kprintf("File \"%s\" not found!\n",name); + return NULL; + } + + size = file.dir_filesize; + if(psize) *psize = size; + buf = (u8*)kmalloc(size); + if(!buf) + { + kprintf("Not enough memory for \"%s\"!\n",name); + return NULL; + } + ptr = buf; + + clus = (file.dir_fstclushi<<16)|file.dir_fstcluslo; + do { + u32 csize = MIN(size,(fat->spc*fat->bps)); + fat_read_cluster(fat,clus); + kmemcpy(ptr,fat->clusbuf,csize); + + ptr += csize; + csize -= csize; + clus = fat_table_read_entry(fat,clus); + } while(!IS_FAT_CLUS_EOF(clus)); + return buf; +} diff --git a/kernel/file.h b/kernel/file.h new file mode 100644 index 0000000..135f4ab --- /dev/null +++ b/kernel/file.h @@ -0,0 +1,9 @@ +#ifndef __FILE_H +#define __FILE_H + +#include "os.h" +#include "fat.h" + +void* file_load(fat_t* fat,u32* size,const char* name); + +#endif diff --git a/kernel/heap.c b/kernel/heap.c new file mode 100644 index 0000000..83da80a --- /dev/null +++ b/kernel/heap.c @@ -0,0 +1,194 @@ +#include "heap.h" +#include "defines.h" +#include "lvalloc.h" +#include "paging.h" +#include "stdlib.h" + +#define MBLOCK_ATTR_ALLOC (1<<0) + +#define IS_MBLOCK_ALLOC(mblock) (mblock->size & MBLOCK_ATTR_ALLOC) + +//static mheap_t s_heap; //heap for all available RAM + +/*void heap_init(mheap_t* heap,u64 size) +{ + heap->heapsz = size>>21; + heap->heap = (u64*)mmap(NULL,(heap->heapsz<<21), + PROT_READ|PROT_WRITE, + MAP_ANONYMOUS|MAP_PRIVATE, + -1, + 0 + ); + memset(heap->heap,0,(heap->heapsz<<21)); +}*/ + +static mblock_t* mblock_get_next(mblock_t* block) +{ + return (mblock_t*)((u8*)block+(block->size & ~7)); +} + +static mblock_t* mblock_by_data(void* data) +{ + return (mblock_t*)((u8*)data-24); +} + +static u64 mblock_get_size(mblock_t* block) +{ + return block->size & ~7; +} + +void heap_join(mblock_t* start,int dir) +{ + mblock_t* cur; + u64 blk_size; + + blk_size = 0; + cur = start; + while(cur != NULL && !IS_MBLOCK_ALLOC(cur)) + { + blk_size += mblock_get_size(cur); + cur->size = 0; + if(dir > 0) cur = cur->next; + else if(dir < 0) cur = cur->prev; + } + + if(dir > 0) + { + start->next = cur; + start->size = blk_size & ~7; + if(cur) + { + if(cur->next) cur->next->prev = start; + } + } + else if(dir < 0) + { + if(cur) + { + cur = cur->next; + cur->size = blk_size & ~7; + cur->next = start->next; + } + } +} + +void heap_split(mblock_t* block,u64 req_size) +{ + u64 tot_size = mblock_get_size(block); + mblock_t* split; + + block->size = (req_size)|MBLOCK_ATTR_ALLOC; + split = mblock_get_next(block); + + //Init prev and next + split->prev = block; + split->next = block->next; + block->next = split; + + split->size = (tot_size-req_size) & ~7; +} + +void* heap_alloc(mheap_t* heap,u64 size) +{ + mblock_t* start,*block,*prev; + size = ROUND2_UP((size+24),5); + + /*for(i = 0; i < heap->heapsz; i++) + { + start = (mblock_t*)((u8*)heap->heap+(i<<21)); + if(!(start->size & MBLOCK_ATTR_ALLOC_2MB)) break; + } + if(i == heap->heapsz) return NULL;*/ + start = (mblock_t*)heap->heap; + + //Find free block + prev = NULL; + block = start; + do { + if((!IS_MBLOCK_ALLOC(block) && mblock_get_size(block) >= size) + || block->size == 0) + break; + prev = block; + if(block->next) block = block->next; + else break; + } while(block); + if(prev == block) prev = NULL; + //Allocate + if(block->size == 0) //Unformatted + { + block->size = size|MBLOCK_ATTR_ALLOC; + block->prev = prev; + block->next = mblock_get_next(block); + } + else heap_split(block,size); + + if(prev && !prev->next) prev->next = block; + + return block->data; +} + +void heap_free(mheap_t* heap,void* mem) +{ + mblock_t* block = (mblock_t*)((u8*)mem-24); + (void)heap; + + //Unlink + block->size &= ~MBLOCK_ATTR_ALLOC; + //Link free blocks prev and next + heap_join(block,1); + heap_join(block,-1); +} + +void heap_init() +{ + ram_pool_t* pool; + u64 addr = (u64)lvalloc_get_next_addr(); + u64 i; + + //Decide in which mapping we have lvalloc mapped and kernel + for(i = 0; i < lmem->ram_pools; i++) + { + pool = &lmem->ram_pool[i]; + if(addr >= pool->start && addr < pool->end) + break; + } + if(i == lmem->ram_pools) + { + kprintf("heap_init failed!\n"); + return; + } + + lmem->heap.heap = (u64*)addr; + lmem->heap.heapsz = (((pool->end - addr)>>21) - 1); + + kprintf("heap %p heapsz %u\n",lmem->heap.heap,lmem->heap.heapsz<<21); + + //Identity page map + //page_map(s_heap.heap,s_heap.heap,s_heap.heapsz<<21); + for(u64 i = 0; i < (lmem->heap.heapsz<<21)>>12; i++) + { + page_map((u8*)lmem->heap.heap+(i<<12),(u8*)lmem->heap.heap+(i<<12), + 4096); + } + + kmemzero(lmem->heap.heap,lmem->heap.heapsz<<21); +} + +void* kmalloc(u64 size) +{ + return heap_alloc(&lmem->heap,size); +} + +void* krealloc(void* addr,u64 newsize) +{ + void* newaddr = kmalloc(newsize); + if(!newaddr) return NULL; + kmemcpy(newaddr,addr,mblock_get_size(mblock_by_data(addr))-24); + kfree(addr); + return newaddr; +} + +void kfree(void* addr) +{ + heap_free(&lmem->heap,addr); +} diff --git a/kernel/heap.h b/kernel/heap.h new file mode 100644 index 0000000..86dfab8 --- /dev/null +++ b/kernel/heap.h @@ -0,0 +1,12 @@ +#ifndef __HEAP_H +#define __HEAP_H + +#include "os.h" + +void heap_init(); + +void* kmalloc(u64 size); +void* krealloc(void* addr,u64 newsize); +void kfree(void* addr); + +#endif diff --git a/kernel/idt.c b/kernel/idt.c new file mode 100644 index 0000000..18b5105 --- /dev/null +++ b/kernel/idt.c @@ -0,0 +1,91 @@ +#include "idt.h" +#include "stdlib.h" + +extern void int0_handler(); +extern void int1_handler(); +extern void int2_handler(); +extern void int3_handler(); +extern void int4_handler(); +extern void int5_handler(); +extern void int6_handler(); +extern void int7_handler(); +extern void int8_handler(); +extern void int9_handler(); +extern void int10_handler(); +extern void int11_handler(); +extern void int12_handler(); +extern void int13_handler(); +extern void int14_handler(); +extern void int15_handler(); +extern void int16_handler(); +extern void int17_handler(); +extern void int18_handler(); +extern void int19_handler(); +extern void int20_handler(); +extern void int21_handler(); +extern void int22_handler(); +extern void int23_handler(); +extern void int24_handler(); +extern void int25_handler(); +extern void int26_handler(); +extern void int27_handler(); +extern void int28_handler(); +extern void int29_handler(); +extern void int30_handler(); +extern void int31_handler(); + +static u32 idt_table[1024]; +static inthandler_t inthandlers[256]; +static inthandler_t handlers[32] = { + int0_handler,int1_handler,int2_handler,int3_handler, + int4_handler,int5_handler,int6_handler,int7_handler, + int8_handler,int9_handler,int10_handler,int11_handler, + int12_handler,int13_handler,int14_handler,int15_handler, + int16_handler,int17_handler,int18_handler,int19_handler, + int20_handler,int21_handler,int22_handler,int23_handler, + int24_handler,int25_handler,int26_handler,int27_handler, + int28_handler,int29_handler,int30_handler,int31_handler +}; +static u64 cur_handler = 0; + +void idt_set_handler(u8 idx,inthandler_t hndr,u8 type) +{ + u32* item = (u32*)(&idt_table[idx<<2]); + u64 addr; + + if(cur_handler == 32) + { + kprintf("idt_set_handler: no free handlers!\n"); + return; + } + inthandlers[cur_handler] = hndr; + addr = (u64)handlers[cur_handler++]; + + item[0] = (OS_CODE_SELECTOR<<16)|(addr&0xFFFF); + item[1] = (((addr>>16)&0xFFFF)<<16)|(1<<15)|((type&0x0F)<<8); + item[2] = (addr>>32); + item[3] = 0; + +} + +void idt_call_handler(u8 handler) +{ + if(inthandlers[handler]) + { + inthandlers[handler](); + } +} + +extern void _idt_install(void* table,u64 limit); +void idt_install() +{ + kmemzero(idt_table,sizeof(idt_table)); + kmemzero(inthandlers,sizeof(inthandlers)); + + _idt_install(idt_table,sizeof(idt_table)); +} + +void idt_enable_interrupts() +{ + __asm("sti"); +} diff --git a/kernel/idt.h b/kernel/idt.h new file mode 100644 index 0000000..bf17062 --- /dev/null +++ b/kernel/idt.h @@ -0,0 +1,17 @@ +#ifndef __IDT_H +#define __IDT_H + +#include "os.h" + +#define IDT_TYPE_INTR 0x0E +#define IDT_TYPE_TRAP 0x0F + +typedef void (*inthandler_t)(); + +void idt_set_handler(u8 idx,inthandler_t hndr,u8 type); +void idt_call_handler(u8 idx); + +void idt_install(); +void idt_enable_interrupts(); + +#endif diff --git a/kernel/io.h b/kernel/io.h new file mode 100644 index 0000000..a412717 --- /dev/null +++ b/kernel/io.h @@ -0,0 +1,21 @@ +#ifndef __IO_H +#define __IO_H + +#include "os.h" + +extern u8 inb(u16 port); +extern void outb(u16 port,u8 data); + +extern u16 inw(u16 port); +extern void outw(u16 port,u16 data); + +extern u32 inl(u16 port); +extern void outl(u16 port,u32 data); + +extern void _insw(u16 port,u8* buffer,u32 count); +extern void _outsw(u16 port,u8* buffer,u32 count); + +extern void _insw256(u16 port,u8* buffer); +extern void _outsw256(u16 port,u8* buffer); + +#endif diff --git a/kernel/keyboard.c b/kernel/keyboard.c new file mode 100644 index 0000000..a9f288f --- /dev/null +++ b/kernel/keyboard.c @@ -0,0 +1,174 @@ +#include "keyboard.h" +#include "exceptions.h" +#include "idt.h" +#include "pic.h" +#include "pit.h" +#include "stdlib.h" +#include "vga_terminal.h" + +static u8 s_i8keycode = 0; +static u8 s_i8keycode2 = 0; +static u32 s_ctrlkeys = 0; + +static u8 s_keymap[128] = { + 0, 0x1B, + '1','2', + '3','4','5','6', + '7','8','9','0', + '-','=', + 0x08, + 0x09, + 'Q','W','E','R', + 'T','Y','U','I', + 'O','P','[',']', + 0x0A,0, + 'A','S','D','F', + 'G','H','J','K', + 'L',';','\'','`', + 0, + '\\', + 'Z','X','C','V', + 'B','N','M',',', + '.','/', + 0, + '*', + 0, + ' ', + 0,0,0,0, + 0,0,0,0, + 0,0,0,0, + 0, +}; + +static char* eng_layout = "qwertyuiop[]\\asdfghjkl;'zxcvbnm`,./"; +static char* rus_layout = "йцукенгшщзхъ\\фывапролджэячсмитьёбю."; +static int cur_layout = 0; + +static char* shift_numbers = "!@#$%^&*()_+"; + +static void check_keys() +{ + if((s_ctrlkeys & (CTRLKEYS_LSHIFT|CTRLKEYS_LALT)) + == (CTRLKEYS_LSHIFT|CTRLKEYS_LALT)) + cur_layout = !cur_layout; +} + +static void _keyboard_ctrlkeys_update(u8 keychar,u8 event) +{ + u8 ctrlkey; + + ctrlkey = 0; + if(keychar == KEY_RSHIFT) ctrlkey = CTRLKEYS_RSHIFT; + else if(keychar == KEY_LSHIFT) ctrlkey = CTRLKEYS_LSHIFT; + else if(keychar == KEY_LALT) ctrlkey = CTRLKEYS_LALT; + + if(event) s_ctrlkeys &= ~ctrlkey; //Released + else s_ctrlkeys |= ctrlkey; //Pressed +} + +void keyboard_interrupt() +{ + u8 status; + u8 keycode,keychar; + + status = inb(0x64); + if(status & 1) + { + keycode = inb(0x60); + keychar = keycode & ~0x80; + s_i8keycode2 = keychar; + if(keychar == KEY_RSHIFT + || keychar == KEY_LSHIFT + || keychar == KEY_LALT) + { + _keyboard_ctrlkeys_update(keychar,keycode>>7); + s_i8keycode = 0; + } + else if(!(keycode & 0x80)) + { + s_i8keycode = keychar; + //kprintf("%c",keyboard_ascii()); + } + } + check_keys(); + + pic_send_eoi(1); +} + +u8 keyboard_scan_code() +{ + return s_i8keycode; +} + +u8 keyboard_ascii() +{ + u8 ascii; + + if(s_i8keycode >= sizeof(s_keymap)) return 0; + ascii = s_keymap[s_i8keycode]; + + if(s_ctrlkeys & (CTRLKEYS_LSHIFT|CTRLKEYS_RSHIFT)) + { + if((s_i8keycode >= 0x02) && (s_i8keycode <= 0x0D)) + { + if(s_i8keycode >= 2) + ascii = shift_numbers[s_i8keycode-2]; + } + if(ascii == '[') ascii = '{'; + else if(ascii == ']') ascii = '}'; + else if(ascii == '\\') ascii = '|'; + else if(ascii == ';') ascii = ':'; + else if(ascii == '\'') ascii = '"'; + else if(ascii == ',') ascii = '<'; + else if(ascii == '.') ascii = '>'; + else if(ascii == '/') ascii = '?'; + else if(ascii == '`') ascii = '~'; + } + else if(ascii >= 0x41 && ascii <= 0x5A) ascii += 0x20; + + return ascii; +} + +static dbcs_t keyboard_layout_get_sym(u8 _chr) +{ + u64 i; + u8 chr = ktolower(_chr); + for(i = 0; i < 34; i++) + if(eng_layout[i] == chr) break; + if(i == 34) return (dbcs_t)_chr; + if(cur_layout == 1) + { + char* sym = rus_layout; + while(i--) + sym += kchrlen(*sym); + return kchr2dbcs(sym); + } + + return (dbcs_t)_chr; +} + +dbcs_t keyboard_sym() +{ + return keyboard_layout_get_sym(keyboard_ascii()); +} + +void keyboard_reset_irq1_vars() +{ + s_i8keycode = 0; +} + +void keyboard_enable() +{ + pic_set_mask(1,1); +} + +void keyboard_disable() +{ + pic_set_mask(1,0); +} + +void keyboard_install() +{ + pic_set_mask(1,1); + idt_set_handler(33,keyboard_interrupt,IDT_TYPE_INTR); +} diff --git a/kernel/keyboard.h b/kernel/keyboard.h new file mode 100644 index 0000000..c50f310 --- /dev/null +++ b/kernel/keyboard.h @@ -0,0 +1,52 @@ +#ifndef __KEYBOARD_H +#define __KEYBAORD_H + +#include "os.h" +#include "string.h" + +#define CTRLKEYS_LSHIFT (1<<0) +#define CTRLKEYS_RSHIFT (1<<1) +#define CTRLKEYS_LALT (1<<2) + +typedef enum { + //Controls keys + KEY_LSHIFT = 0x2A, + KEY_RSHIFT = 0x36, + KEY_LALT = 0x38, + + //Numpad + KEY_NP_7 = 0x47, + KEY_NP_8, + KEY_NP_9, + KEY_NP_MINUS, + KEY_NP_4, + KEY_NP_5, + KEY_NP_6, + KEY_NP_PLUS, + KEY_NP_DOT, + //Functions + KEY_F1 = 0x3B, + KEY_F2, + KEY_F3, + KEY_F4, + KEY_F5, + KEY_F6, + KEY_F7, + KEY_F8, + KEY_F9, + KEY_F10, + KEY_F11 = 0x57, + KEY_F12 +} kb_keys_t; + +void keyboard_install(); +u8 keyboard_scan_code(); +u8 keyboard_ascii(); +dbcs_t keyboard_sym(); + +void keyboard_enable(); +void keyboard_disable(); + +void keyboard_reset_irq1_vars(); + +#endif diff --git a/kernel/kmain.c b/kernel/kmain.c new file mode 100644 index 0000000..9f63d1a --- /dev/null +++ b/kernel/kmain.c @@ -0,0 +1,250 @@ +#include "os.h" +#include "stdlib.h" +#include "string.h" +#include "idt.h" +#include "pic.h" +#include "pit.h" +#include "pci.h" +#include "exceptions.h" +#include "keyboard.h" +#include "paging.h" +#include "lvalloc.h" +#include "multiboot.h" +#include "disk.h" +#include "heap.h" +#include "file.h" +#include "fat.h" +#include "video.h" + +// IDT +// PIC +// PIT +// paging +// keyboard + +static char* xnums = "0123456789ABCDEF"; + +lmem_t* lmem; +disk_t* disk1; + +void command_interpreter() +{ + dbcs_t _command[64]; + char command[128]; + char name[512]; + char* buf = (char*)kmalloc(4096); + + while(1) + { + kputc('>'); + kgets(_command,64); + kdbcs2str(_command,command,sizeof(command)); + /*if(!kstrncmp(command,"ram_map")) + { + ram_map_t* ram = ram_get_map(); + kprintf("RAM size = %u\nRAM pools %u\n", + ram->ram_total_size,ram->ram_pool_count); + for(u32 i = 0; i < ram->ram_pool_count; i++) + { + kprintf("\t%p\t%p\n",ram->ram_pools[i].start, + ram->ram_pools[i].end); + } + } + else if(!kstrncmp(command,"page_map")) + { + u32 virt,phys,size; + ksscanf(command,"page_map %p %p %u",&virt,&phys,&size); + page_map(virt,phys,size,PAGE_TABLE_READWRITE); + } + else if(!kstrncmp(command,"page_unmap")) + { + u32 virt,size; + ksscanf(command,"page_unmap %p %u",&virt,&size); + page_unmap(virt,size); + } + else if(!kstrncmp(command,"page_v2p")) + { + u32 virt; + ksscanf(command,"page_v2p %p",&virt); + kprintf("VIRT %p -> PHYS %p\n",virt,page_v2p(virt)); + } + else */ + if(!kstrncmp(command,"ram_map")) + { + kprintf("RAM size = %u\nRAM pools %u\n", + lmem->ram_size,lmem->ram_pools); + for(u32 i = 0; i < lmem->ram_pools; i++) + { + kprintf("\t%p\t%p\n",lmem->ram_pool[i].start, + lmem->ram_pool[i].end); + } + } + else if(!kstrncmp(command,"dump")) + { + u64 lines,virt; + ksscanf(command,"dump %u %p",&lines,&virt); + for(u64 i = 0; i < lines; i++) + { + kprintf("%p: ",virt); + for(u64 j = 0; j < 16; j++) + { + u8 byte; + byte = *(u8*)(virt+j); + kprintf("%c%c ",xnums[byte>>4],xnums[byte&0x0F]); + } + kprintf("\n"); + virt += 16; + } + } + else if(!kstrncmp(command,"pci_dump")) + { + pci_dump(); + } + else if(!kstrncmp(command,"hang")) + { + while(1){__asm("nop");} + } + else if(!kstrncmp(command,"lvalloc")) + { + u64 size; + ksscanf(command,"lvalloc %u",&size); + kprintf(":\t%p\n",lvalloc(size)); + } + else if(!kstrncmp(command,"memcpy")) + { + u64 dst,src,size; + ksscanf(command,"memecpy %p %p %u",&dst,&src,&size); + kmemcpy((void*)dst,(const void*)src,size); + } + else if(!kstrncmp(command,"vcopy")) + { + char* src; + u64 size; + ksscanf(command,"vcopy %p %u",&src,&size); + for(u64 i = 0; i < size; i++) kputc(src[i]); + } + else if(!kstrncmp(command,"disk_read")) + { + char name[2]; + u64 lba,num; + disk_t* disk; + + ksscanf(command,"disk_read \"%s\" %u %u",name,2,&lba,&num); + disk = disk_get(name[0]); + disk_read(disk,lba,num,buf); + kprintf(":\tbuf %p\n",buf); + } + else if(!kstrncmp(command,"disk_info")) + { + kprintf("UID: %x %x\n",*(u64*)&disk1->uid, + *((u64*)(&disk1->uid)+1)); + for(u64 i = 0; i < 4; i++) + { + kprintf("%x\t%x\n",disk1->parts[i].lba_start, + disk1->parts[i].lba_num); + kprintf("%x\t%x\n\n",disk1->parts[i].attributes, + disk1->parts[i].type); + } + } + else if(!kstrncmp(command,"malloc")) + { + u64 size; + ksscanf(command,"malloc %u",&size); + kprintf(":\t%p\n",kmalloc(size)); + } + else if(!kstrncmp(command,"free")) + { + u64 addr; + ksscanf(command,"free %p",&addr); + kfree((void*)addr); + } + else if(!kstrncmp(command,"file_load")) + { + u32 size; + kmemzero(name,sizeof(name)); + ksscanf(command,"load_file \"%s\"", + name,sizeof(name)); + void* addr = file_load(&g_fat,&size,name); + kprintf(":\t%p\t%u\n",addr,size); + } + else if(!kstrncmp(command,"тестовая_команда")) + { + kprintf("Работает :D\n"); + } + else if(!kstrncmp(command,"draw")) + { + ksscanf(command,"draw \"%s\"",name,sizeof(name)); + u8* bmp = file_load(&g_fat,NULL,name); + if(!bmp) + { + kprintf("Ошибка!\n"); + continue; + } + printbmp(bmp); + kfree(bmp); + } + /*else if(!kstrncmp(command,"sata_identify")) + { + sata_identify(); + }*/ + } +} + + +void kmain(lmem_t* lptr) +{ + lmem = lptr; + + cls(); + chg_color(VGA_COLOR_LIGHT_MAGENTA); + + idt_install(); + idt_enable_interrupts(); + + pic_init(0x20,0x28); + pit_init(); + + install_exceptions(); + keyboard_install(); + __asm("sti"); + + mbt_scan_memory(); + lvalloc_init(); + pci_detect_hardware(); + + disk_init(); + disk1 = disk_get('D'); + disk_setup(disk1); + + kprintf("disk1 size %f GB (%u MB)\n", + (((disk1->phys_totalsectors<<9)>>20)<<16)>>10, + (disk1->phys_totalsectors<<9)>>20); + kprintf("sizeof(lmem_t) %u\n",sizeof(lmem_t)); + + if(lmem->ram_size < (1073741824ULL)) + { + //We're running under QEMU + disk1->cur_part = 1; + } + + fat_init(&g_fat,disk1); + + //Initialize heap. Since heap was intitialized, we can't use + //linear allocator (lvalloc) anymore + heap_init(); + + video_init(); + vga_terminal_init(); + + u8* logo = file_load(&g_fat,NULL,"/logo.bmp"); + bmp_draw((lmem->v_width>>1)-80, + 0,160,lmem->vt_charh*10,logo); + kfree(logo); + + for(u64 i = 0; i < 10; i++) kputc('\n'); + kprintf("Леночка x86-64\n"); + + command_interpreter(); + + while(1){__asm("hlt");} //Should never return! +} diff --git a/kernel/lvalloc.c b/kernel/lvalloc.c new file mode 100644 index 0000000..5e4a392 --- /dev/null +++ b/kernel/lvalloc.c @@ -0,0 +1,38 @@ +#include "lvalloc.h" +#include "paging.h" +#include "defines.h" +#include "stdlib.h" + +void* lvalloc(size_t size) +{ + u64 addr; + + addr = (u64)lvalloc_get_next_addr(); + page_map((void*)addr,(void*)addr,size); + + lmem->lv_current += (ROUND2_UP(size,12) >> 12); + + kmemzero((void*)addr,ROUND2_UP(size,12)); + return (void*)addr; +} + +void* lvalloc_get_next_addr() +{ + return (void*)((u64)lmem->lv_start+(lmem->lv_current<<12)); +} + +void lvalloc_push() +{ + lmem->lv_stack[--lmem->lv_sp] = lmem->lv_current; +} + +void lvalloc_pop() +{ + lmem->lv_current = lmem->lv_stack[lmem->lv_sp++]; +} + +void lvalloc_init() +{ + lmem->lv_sp = MAX_LV_SSIZE; + lmem->lv_start = (u8*)(lmem->kernel_phys_addr + KERNEL_SIZE); +} diff --git a/kernel/lvalloc.h b/kernel/lvalloc.h new file mode 100644 index 0000000..6431a84 --- /dev/null +++ b/kernel/lvalloc.h @@ -0,0 +1,15 @@ +#ifndef __LVALLOC_H +#define __LVALLOC_H + +#include "os.h" + +void* lvalloc(size_t size); + +void lvalloc_push(); +void lvalloc_pop(); + +void* lvalloc_get_next_addr(); + +void lvalloc_init(); + +#endif diff --git a/kernel/multiboot.c b/kernel/multiboot.c new file mode 100644 index 0000000..cf76bd1 --- /dev/null +++ b/kernel/multiboot.c @@ -0,0 +1,36 @@ +#include "os.h" +#include "multiboot.h" +#include "stdlib.h" + +void mbt_scan_memory() +{ + lmem->ram_size = 0; + lmem->ram_pools = 0; + + multiboot_hdr_t* mbt = (multiboot_hdr_t*)((u64)lmem->multiboot); + multiboot_mmap_t* mmap = (multiboot_mmap_t*)((u64)mbt->mmap_addr); + + while((u64)mmap < mbt->mmap_addr + mbt->mmap_length) + { + if(mmap->type == 1) + { + ram_pool_t* pool; + if(lmem->ram_pools == MAX_RAM_POOLS) + break; + pool = &lmem->ram_pool[lmem->ram_pools++]; + + pool->start = mmap->base_addr; + pool->end = mmap->base_addr + mmap->length; + + lmem->ram_size += mmap->length; + } + mmap = (multiboot_mmap_t*)((u64)mmap + mmap->size + 4); + } + + kprintf("RAM size %f\n",((lmem->ram_size>>20)<<16)>>10); + for(u64 i = 0; i < lmem->ram_pools; i++) + { + kprintf("RAM %x - %x\n",lmem->ram_pool[i].start, + lmem->ram_pool[i].end); + } +} diff --git a/kernel/multiboot.h b/kernel/multiboot.h new file mode 100644 index 0000000..0f9146c --- /dev/null +++ b/kernel/multiboot.h @@ -0,0 +1,61 @@ +#ifndef __MULTIBOOT_H +#define __MULTIBOOT_H + +#include "os.h" + +typedef struct { + u32 flags; + + u32 mem_lower; + u32 mem_upper; + + u32 boot_device; + + u32 cmd_line; + + u32 mods_count; + u32 mods_addr; + + u32 syms[4]; + + u32 mmap_length; + u32 mmap_addr; + + u32 drives_length; + u32 drives_addr; + + u32 config_table; + + u32 boot_loader_name; + + u32 apm_table; + + u32 vbe_control_info; + u32 vbe_mode_info; + u16 vbe_mode; + u16 vbe_interface_seg; + u16 vbe_interface_off; + u16 vbe_interface_len; + + u64 framebuffer_addr; + u32 framebuffer_pitch; + u32 framebuffer_width; + u32 framebuffer_height; + u8 framebuffer_bpp; + u8 framebuffer_type; + u8 color_info[5]; + +} __attribute__((packed)) multiboot_hdr_t; + +#define MBT_MMAP_TYPE_RAM 1 + +typedef struct { + u32 size; + u64 base_addr; + u64 length; + u32 type; +} __packed multiboot_mmap_t; + +void mbt_scan_memory(); + +#endif diff --git a/kernel/os.h b/kernel/os.h new file mode 100644 index 0000000..1d4c038 --- /dev/null +++ b/kernel/os.h @@ -0,0 +1,133 @@ +#ifndef __OS_H +#define __OS_H + +#define OS_NULL_SELECTOR 0x00 +#define OS_CODE_SELECTOR 0x08 +#define OS_DATA_SELECTOR 0x10 + +#define OS_PM86_MEM_SIZE_4K (1024*1024) + +//#define OS_VIDEO_BUFFER 0xC10B8000 +#define OS_VIDEO_BUFFER 0x00000000000B8000 + +#define __packed __attribute__((packed)) +#define __align(N) __attribute__((aligned(N))) +#define __format_arg(N) __attribute__((format_arg(N))) + +#define __phys +#define __virt + +#define NULL (void*)0 + +#define KERNEL_SIZE 0x1000000 + +#define MAX_RAM_POOLS 8 +#define MAX_LV_SSIZE 8 + +typedef unsigned char u8; +typedef unsigned short u16; +typedef unsigned int u32; +typedef unsigned long u64; + +typedef char i8; +typedef short i16; +typedef int i32; +typedef long i64; + +typedef unsigned long size_t; +typedef unsigned long ulong; +typedef long ilong; + +typedef struct { + u64 __phys start; + u64 __phys end; +} ram_pool_t; + +typedef struct mblock_s { + struct mblock_s* prev; + struct mblock_s* next; + u64 size; + u32 data[1]; +} mblock_t; + +typedef struct { + u64* heap; //heap ptr + u64 heapsz; //heap size in 2 MB blocks +} mheap_t; + +typedef struct { + //LOADER + + u64 gdt_entry[8]; + + //Paging + u64* p_pml4; //[512] + u64* p_pdp; //[OS_MAX_MEM_GBS] + u64* p_dir; //[512*OS_MAX_MEM_GBS] + u64* p_table; //[512*512*OS_MAX_MEM_GBS] + + //Loader + u64 elf_ptr; + u64 paging_size; + u64 multiboot; + u64 gdt_limit; + + u64 kernel_phys_base; + u64 kernel_phys_page; + u64 kernel_phys_addr; + u64 kernel_virt_addr; + + //KERNEL + + //RAM + u64 ram_size; + u64 ram_pools; + ram_pool_t ram_pool[MAX_RAM_POOLS]; + + //lvalloc + u8* lv_start; + u64 lv_current; + u64 lv_sp; + u64 lv_stack[8]; + + //heap + mheap_t heap; + + //video + u64 v_stride; + u64 v_width; + u64 v_height; + u8* v_mem; + + u64 v_bpp; + u64 v_size; + + u64 v_r_p; + u64 v_r_s; + + u64 v_g_p; + u64 v_g_s; + + u64 v_b_p; + u64 v_b_s; + + //video text + u64 vf_chars; + u64 vf_wchar; //fixed point + u64 vf_hchar; //fixed point + + u16* vf_encodings; + u8* vf_bitmaps; + + //text + u64 vt_charw; + u64 vt_charh; + u64 vt_chars; + u64 vt_lines; +} __packed lmem_t; + +extern lmem_t* lmem; + +extern void x64_rax_n_stop(u64 rax); + +#endif diff --git a/kernel/paging.c b/kernel/paging.c new file mode 100644 index 0000000..e2c4024 --- /dev/null +++ b/kernel/paging.c @@ -0,0 +1,131 @@ +#include "paging.h" +#include "defines.h" + +//1 table entry - 4KB, entire table - 2 MB +//1 dir entry - 2 MB, entire directory - 1 GB +//1 pdp entry - 1 GB, entire PDP dir - 512 GB +//1 PML4 entry - 512 GB, entire PML4 dir - 256 TB + +/* +void page_map(u64 virt,u64 phys) +{ + u32 table_idx,dir_idx,pdp_idx; + u64 addr; + + table_idx = (virt>>12) & 0x7FFFFFF; + dir_idx = table_idx>>9; + pdp_idx = dir_idx>>9; + + if(!(lmem->p_pdp[pdp_idx] & 3)) + { + addr = (u64)((u32)&lmem->p_dir[dir_idx]); + //kprintf("addr %l\n",&addr); + lmem->p_pdp[pdp_idx] = (addr&0xFFFFFFFFFFFFF000)|3; + } + + if(!(lmem->p_dir[dir_idx] & 3)) + { + addr = (u64)((u32)&lmem->p_table[table_idx]); + lmem->p_dir[dir_idx] = (addr&0xFFFFFFFFFFFFF000)|3; + } + + lmem->p_table[table_idx] = (phys&0xFFFFFFFFFFFFF000)|3; +}*/ + +// RESERVED PML4 PDP DIR TABLE OFFSET +//0000000000000000 000000000 001111111 000000000 000000000 000000000000 + +void page_map(void* __virt virt,void* __phys phys,size_t size) +{ + u64 table_idx,dir_idx,pdp_idx; + u64 table_cnt,dir_cnt,pdp_cnt; + u64 vaddr,paddr; + + vaddr = (u64)virt; + paddr = (u64)phys; + + table_idx = (vaddr>>12) & 0x7FFFFFF; + dir_idx = table_idx>>9; + pdp_idx = dir_idx>>9; + + table_cnt = ROUND2_UP(size,12) >> 12; + dir_cnt = ROUND1_ADD((table_cnt>>9)); + pdp_cnt = ROUND1_ADD((dir_cnt>>9)); + + for(u64 i = 0; i < table_cnt; i++) + { + lmem->p_table[table_idx+i] = + ((paddr+(i<<12))&0xFFFFFFFFFFFFF000) | PAGE_TABLE_FLAGS; + } + + for(u64 i = 0; i < dir_cnt; i++) + { + u64 addr; + addr = (u64)(&lmem->p_table[(dir_idx+i)<<9]); + lmem->p_dir[dir_idx+i] = (addr&0xFFFFFFFFFFFFF000) | PAGE_TABLE_FLAGS; + } + + for(u64 i = 0; i < pdp_cnt; i++) + { + u64 addr; + addr = (u64)(&lmem->p_dir[(pdp_idx+i)<<9]); + lmem->p_pdp[pdp_idx+i] = (addr&0xFFFFFFFFFFFFF000) | PAGE_TABLE_FLAGS; + } +} + +void page_unmap(void* __virt virt,size_t size) +{ + u64 table_idx,dir_idx,pdp_idx; + u64 table_cnt,dir_cnt,pdp_cnt; + u64 vaddr; + + vaddr = (u64)virt; + + table_idx = (vaddr>>12) & 0x7FFFFFF; + dir_idx = table_idx>>9; + pdp_idx = dir_idx>>9; + + table_cnt = ROUND2_UP(size,12) >> 12; + dir_cnt = ROUND1_ADD((table_cnt>>9)); + pdp_cnt = ROUND1_ADD((dir_cnt>>9)); + + for(u64 i = 0; i < table_cnt; i++) + lmem->p_table[table_idx+i] = 0; + + for(u64 i = 0; i < dir_cnt; i++) + { + u64 j; + //Check if directory empty + for(j = 0; j < 512; j++) + { + if(lmem->p_table[((dir_idx+i)<<9)+j] & PAGE_TABLE_FLAGS) + break; + } + //Empty + if(j == 512) lmem->p_dir[dir_idx+i] = 0; + } + + for(u64 i = 0; i < pdp_cnt; i++) + { + u64 j; + //Check if PDP empty + for(j = 0 ; j < 512; j++) + { + if(lmem->p_dir[((pdp_idx+i)<<9)+j] & PAGE_TABLE_FLAGS) + break; + } + //Empty + if(j == 512) lmem->p_pdp[pdp_idx+i] = 0; + } +} + +u64 __phys page_v2p(void* __virt virt) +{ + u64 table_idx,page; + + table_idx = (((u64)virt)>>12) & 0x7FFFFFF; + page = lmem->p_table[table_idx]; + + if(page & PAGE_TABLE_FLAGS) return page & 0xFFFFFFFFFFFFF000; + return -1; +} diff --git a/kernel/paging.h b/kernel/paging.h new file mode 100644 index 0000000..8b477cf --- /dev/null +++ b/kernel/paging.h @@ -0,0 +1,14 @@ +#ifndef __PAGING_H +#define __PAGING_H + +#include "os.h" + +#define PAGE_TABLE_RRESENT (1<<0) +#define PAGE_TABLE_READWRITE (1<<1) +#define PAGE_TABLE_FLAGS (PAGE_TABLE_RRESENT|PAGE_TABLE_READWRITE) + +void page_map(void* __virt virt,void* __phys phys,size_t size); +void page_unmap(void* __virt virt,size_t size); +u64 __phys page_v2p(void* __virt virt); + +#endif diff --git a/kernel/pci.c b/kernel/pci.c new file mode 100644 index 0000000..35e7529 --- /dev/null +++ b/kernel/pci.c @@ -0,0 +1,251 @@ +#include "pci.h" +#include "vga_terminal.h" +#include "stdlib.h" +#include "io.h" + +typedef struct { + u32 device_count; + pci_device_t devices[MAX_PCI_DEVICES]; +} pci_hardware_t; + +static pci_hardware_t s_pci; + +struct pci_class_s { + u32 len; + const char* name; +}; + +static struct pci_class_s s_classes[] = { + {2,"Unclassified"}, + {9,"Mass Storage Controller"}, + {9,"Network Controller"}, + {3,"Display Controller"}, + {4,"Multimedia Controller"}, + {2,"Memory controller"}, + {11,"Bridge Device"}, + {6,"Simple Communication Controller"}, + {7,"Base System Peripheral"}, + {5,"Input Device Controller"}, + {0,"Docking Station"}, + {0,"Processor"}, + {10,"Serial Bus Controller"}, + {0,"Wireless Controller"}, + {0,"Intelligent Controller"}, + {0,"Satellite Communication Controller"}, + {0,"Encryption Controller"}, + {0,"Signal Processing Controller"}, + {0,"Processing Accelerator"}, + {0,"Non-Essential Instrumentation"} +}; + +static char* s_subclasses[] = { + "Non-VGA-Compatible devices", + "VGA-Compatible Device", + + "SCSI Bus Controller", + "IDE Controller", + "Floppy Disk Controller", + "IPI Bus Controller", + "RAID Controller", + "ATA Controller", + "Serial ATA", + "Serial Attached SCSI", + "Non-Volatile Memory Controller", + + "Ethernet Controller", + "Token Ring Controller", + "FDDI Controller", + "ATM Controller", + "ISDN Controller", + "WorldFip Controller", + "PICMG 2.14 Multi Computing", + "Infiniband Controller", + "Fabric Controller", + + "VGA Compatible Controller", + "XGA Controller", + "3D Controller (Not VGA-Compatible)", + + "Multimedia Video Controller", + "Multimedia Audio Controller", + "Computer Telephony Device", + "Audio Device", + + "RAM Controller", + "Flash Controller", + + "Host Bridge", + "ISA Bridge", + "EISA Bridge", + "MCA Bridge", + "PCI-to-PCI Bridge", + "PCMCIA Bridge", + "NuBus Bridge", + "CardBus Bridge", + "RACEway Bridge", + "PCI-to-PCI Bridge", + "InfiniBand-to-PCI Host Bridge", + + "Serial Controller", + "Parallel Controller", + "Multiport Serial Controller", + "Modem", + "IEEE 488.1/2 (GPIB) Controller", + "Smart Card", + + "PIC", + "DMA Controller", + "Timer", + "RTC Controller", + "PCI Hot-Plug Controller", + "SD Host controller", + "IOMMU", + + "Keyboard Controller", + "Digitizer Pen", + "Mouse Controller", + "Scanner Controller", + "Gameport Controller", + + "FireWire (IEEE 1394) Controller", + "ACCESS Bus", + "SSA", + "USB Controller", + "Fibre Channel", + "SMBus", + "InfiniBand", + "IPMI Interface", + "SERCOS Interface (IEC 61491)", + "CANbus" + +}; + +u32 pci_read_config_word(u32 bus,u32 device,u32 function,u32 offset) +{ + u32 address; + + bus &= 0xFF; // 8 bit + device &= 0x1F; // 5 bit + function &= 0x07; // 3 bit + offset &= 0xFC; // 6 bit + + address = 0x80000000UL|(bus<<16)|(device<<11)|(function<<8)|(offset); + + outl(PCI_CONFIG_ADDRESS,address); + return inl(PCI_CONFIG_DATA); +} + +u32 pci_read_config_word_dev(pci_device_t dev,u32 offset) +{ + u32 address; + + offset &= 0xFC; // 6 bit + + address = 0x80000000|((dev&0xFFFF0000)>>8)|(offset); + + outl(PCI_CONFIG_ADDRESS,address); + return inl(PCI_CONFIG_DATA); +} + +const char* pci_get_class(u32 class) +{ + if(class >= sizeof(s_classes)/sizeof(struct pci_class_s)) + return "Unknown"; + return s_classes[class].name; +} + +const char* pci_get_subclass(u32 class,u32 subclass) +{ + u32 i,index; + + if(class >= sizeof(s_classes)/sizeof(struct pci_class_s)) + return "Unknown"; + if(subclass >= sizeof(s_subclasses)/sizeof(const char*)) + return "Unknown"; + else if(subclass == 0x80) return "Other"; + + index = 0; + for(i = 0; i < class; i++) + index += s_classes[i].len; + if(i == class && subclass >= s_classes[i].len) return "Unknown"; + + return s_subclasses[index+subclass]; +} + +void pci_dump() +{ + for(u32 i = 0; i < s_pci.device_count; i++) + { + u32 class,subclass; + + class = (s_pci.devices[i]>>8)&0xFF; + subclass = s_pci.devices[i] & 0xFF; + kprintf("%x\t%s\t%s\n", + s_pci.devices[i], + pci_get_class(class), + pci_get_subclass(class,subclass)); + } +} + +static void pci_add_device(u32 bus,u32 device,u32 func, + u32 class,u32 subclass) +{ + pci_device_t dev; + + dev = (bus<<24)|(device<<19)|(func<<16)|(class<<8)|(subclass); + if(s_pci.device_count < MAX_PCI_DEVICES) + s_pci.devices[s_pci.device_count++] = dev; +} + +static void pci_scan_bus(u32 bus); + +static void pci_scan_device(u32 bus,u32 dev,u32 func) +{ + u32 class = pci_read_config_word(bus,dev,func,0x08) >> 16; + u32 hdr = (pci_read_config_word(bus,dev,func,0x0C) >> 16) & 0xFF; + + if(class == 0x0604) //PCI-to-PCI bridge + { + pci_scan_bus((pci_read_config_word( + bus,dev,func,0x18) >> 8) & 0xFF); + } + if(hdr & 0x80 && func == 0) //Multifunction + { + for(u32 i = 1; i < 8; i++) + { + u32 vendor = pci_read_config_word(bus,dev,i,0x00) & 0xFFFF; + if(vendor != 0xFFFF) + pci_scan_device(bus,dev,i); + } + } + + pci_add_device(bus,dev,func,class>>8,class&0xFF); +} + +static void pci_scan_bus(u32 bus) +{ + for(u32 i = 0; i < 32; i++) + { + u32 vendor = pci_read_config_word(bus,i,0,0x00) & 0xFFFF; + if(vendor != 0xFFFF) + pci_scan_device(bus,i,0); + } +} + +void pci_detect_hardware() +{ + s_pci.device_count = 0; + for(u32 i = 0; i < 256; i++) + pci_scan_bus(i); +} + +pci_device_t pci_find_device(u32 class,u32 subclass) +{ + u32 data = class<<8|subclass; + for(u32 i = 0; i < s_pci.device_count; i++) + { + if((s_pci.devices[i] & 0xFFFF) == data) + return s_pci.devices[i]; + } + return 0; +} diff --git a/kernel/pci.h b/kernel/pci.h new file mode 100644 index 0000000..86c05c4 --- /dev/null +++ b/kernel/pci.h @@ -0,0 +1,24 @@ +#ifndef __PCI_H +#define __PCI_H + +#include "os.h" + +#define PCI_CONFIG_ADDRESS 0xCF8 +#define PCI_CONFIG_DATA 0xCFC + +#define MAX_PCI_DEVICES 256 + +// bbbbbbbbdddddfffccccccccssssssss +typedef u32 pci_device_t; + +u32 pci_read_config_word(u32 bus,u32 device,u32 function,u32 hword); +u32 pci_read_config_word_dev(pci_device_t dev,u32 hword); + +void pci_dump(); +void pci_detect_hardware(); + +//Returns device index +//-1 for NOTFOUND +pci_device_t pci_find_device(u32 class,u32 subclass); + +#endif diff --git a/kernel/pic.c b/kernel/pic.c new file mode 100644 index 0000000..896f5bb --- /dev/null +++ b/kernel/pic.c @@ -0,0 +1,45 @@ +#include "pic.h" + +void pic_init(int master,int slave) +{ + outb(PIC1,ICW1); + outb(PIC2,ICW1); + + outb(PIC1+1,master&0xFF); + outb(PIC2+1,slave&0xFF); + + outb(PIC1+1,4); + outb(PIC2+1,2); + + outb(PIC1+1,ICW4); + outb(PIC2+1,ICW4); + + //Disable all IRQs + outb(PIC1+1,0xFF); + outb(PIC2+1,0xFF); +} + +void pic_set_mask(int irq,int enabled) +{ + u16 pic; + u8 mask; + + if(irq >= 8) + { + pic = PIC2+1; + irq -= 8; + } + else pic = PIC1+1; + + mask = inb(pic); + if(enabled) mask &= ~(1<= 8) outb(PIC2,0x20); + outb(PIC1,0x20); +} diff --git a/kernel/pic.h b/kernel/pic.h new file mode 100644 index 0000000..5a5f167 --- /dev/null +++ b/kernel/pic.h @@ -0,0 +1,16 @@ +#ifndef __PIC_H +#define __PIC_H + +#include "io.h" + +#define PIC1 0x20 +#define PIC2 0xA0 + +#define ICW1 0x11 +#define ICW4 0x01 + +void pic_init(int master,int slave); +void pic_set_mask(int irq,int enabled); +void pic_send_eoi(int irq); + +#endif diff --git a/kernel/pit.c b/kernel/pit.c new file mode 100644 index 0000000..41fc725 --- /dev/null +++ b/kernel/pit.c @@ -0,0 +1,36 @@ +#include "pit.h" +#include "pic.h" +#include "idt.h" + +static u64 s_counter = 0; + +void timer_interrupt() +{ + if(s_counter) s_counter--; + pic_send_eoi(0); +} + +void sleep(u64 msecs) +{ + __asm("cli"); + if(msecs < 55) msecs = 55; + s_counter = msecs/55; + __asm("sti"); + //pic_set_mask(0,1); + do { + __asm("hlt"); //Wait for IRQ + } while(s_counter); + //pic_set_mask(0,0); +} + +void pit_init() +{ + //Setup IRQ + idt_set_handler(32,timer_interrupt,IDT_TYPE_INTR); + pic_set_mask(0,1); + + //Init PIT + outb(0x43,0x36); + outb(0x40,0x00); + outb(0x40,0x00); +} diff --git a/kernel/pit.h b/kernel/pit.h new file mode 100644 index 0000000..fc7aa1f --- /dev/null +++ b/kernel/pit.h @@ -0,0 +1,10 @@ +#ifndef __PIT_H +#define __PIT_H + +#include "io.h" + +void sleep(u64 msecs); + +void pit_init(); + +#endif diff --git a/kernel/start.asm b/kernel/start.asm new file mode 100644 index 0000000..5565866 --- /dev/null +++ b/kernel/start.asm @@ -0,0 +1,17 @@ +use64 +section .bss +align 16 +resb 65536 ; 64 KiB stack +stack_top: + +section .text +global _start +extern kmain + +_start: + cli + mov rsp,stack_top + call kmain + + cli + hlt diff --git a/kernel/stdlib.c b/kernel/stdlib.c new file mode 100644 index 0000000..8a5e007 --- /dev/null +++ b/kernel/stdlib.c @@ -0,0 +1,444 @@ +#include "stdlib.h" +#include "vga_terminal.h" +#include "keyboard.h" +#include "string.h" +#include "va_list.h" + +void iprint(i64 number) +{ + //18446744073709551615 + char num[32]; + char* s = num; + int uns = 0; + + if(number < 0) + { + uns = 1; + number *= -1; + } + while(number >= 10) + { + *s++ = '0'+(number%10); + number/=10; + } + *s++ = '0'+(number%10); + if(uns) *s++ = '-'; + s--; + while(s >= num) printchar(*s--); +} + +void uprint(u64 number) +{ + //18446744073709551615 + char num[32]; + char* s = num; + while(number >= 10) + { + *s++ = '0'+(number%10); + number/=10; + } + *s++ = '0'+(number%10); + s--; + while(s >= num) printchar(*s--); +} + +static char* xnums = "0123456789ABCDEF"; + +void xprint(u64 number) +{ + //FFFFFFFFFFFFFFFF + char num[32]; + char* s = num; + + while(s-num < 15) + { + *s++ = xnums[(number%16)]; + number/=16; + } + *s++ = xnums[(number%16)]; + *s++ = 'x'; + *s++ = '0'; + s--; + while(s >= num) printchar(*s--); +} + +void fprint(u64 number) +{ + u64 val; + char num[64]; + int i; + + //decimal + i = 0; + val = number>>16; + while(val != 0) + { + num[i++] = '0'+(val%10); + val /= 10; + } + num[i++] = '0'+(val%10); + while(i != 0) printchar(num[--i]); + + //fraction + i = 0; + val = number&0xFFFF; + printchar('.'); + while(val != 0) + { + val *= 10; + printchar('0'+(val>>16)); + val &= 0xFFFF; + } +} + +void iprints(char* outs,i64 number) +{ + //18446744073709551615 + char num[32]; + char* s = num; + int uns = 0; + + if(number < 0) + { + uns = 1; + number *= -1; + } + while(number >= 10) + { + *s++ = '0'+(number%10); + number/=10; + } + *s++ = '0'+(number%10); + if(uns) *s++ = '-'; + while(s >= num) *outs++ = *--s; + *outs++ = '\0'; +} + +void uprints(char* outs,u64 number) +{ + //18446744073709551615 + char num[32]; + char* s = num; + while(number >= 10) + { + *s++ = '0'+(number%10); + number/=10; + } + *s++ = '0'+(number%10); + while(s >= num) *outs++ = *--s; + *outs++ = '\0'; +} + +void xprints(char* outs,u64 number) +{ + //FFFFFFFFFFFFFFFF + char num[32]; + char* s = num; + + while(s-num < 15) + { + *s++ = xnums[(number%16)]; + number/=16; + } + *s++ = xnums[(number%16)]; + *s++ = 'x'; + *s++ = '0'; + while(s >= num) *outs++ = *--s; + *outs++ = '\0'; +} + +void kprint(char* str) +{ + print(str); +} + +void ksprintf(char* dst,size_t maxLen,const char* fmt,...) +{ + va_list ap; + va_start(&ap); + + u64 idx; + char* cur,*end,c; + char numbuf[64]; + + idx = 1; + cur = dst; + end = dst+maxLen; + while((c = *fmt++) && cur != end) + { + if(c == '%') + { + char* p = numbuf; + c = *fmt++; + if(c == 'd') + { + iprints(numbuf,(ilong)va_arg(&ap,idx++)); + while((*cur++ = *p++)) + if(cur == end) break; + cur--; + } + else if(c == 'u') + { + uprints(numbuf,(ilong)va_arg(&ap,idx++)); + while((*cur++ = *p++)) + if(cur == end) break; + cur--; + } + else if(c == 'p' || c == 'x') + { + xprints(numbuf,(ulong)va_arg(&ap,idx++)); + while((*cur++ = *p++)) + if(cur == end) break; + cur--; + } + else if(c == 's') + { + const char* str = (const char*)va_arg(&ap,idx++); + while((*cur++ = *str++)) + if(cur == end) break; + cur--; + } + else if(c == '%') + { + if(cur != end) *cur++ = '%'; + } + } + else + { + if(cur == end) break; + *cur++ = c; + } + } + if(cur == end) + *(end-1) = '\0'; +} + +void kprintf(const char* fmt,...) +{ + va_list ap; + va_start(&ap); + + u64 idx; + dbcs_t c; + + idx = 1; + //while((c = *fmt++)) + do + { + c = kchr2dbcs(fmt); + if(!c) break; + fmt += kchrlen(*fmt); + if(c == '%') + { + //c = *fmt++; + c = kchr2dbcs(fmt); + fmt += kchrlen(*fmt); + switch(c) + { + case 'd': iprint((i64)va_arg(&ap,idx++)); break; + case 'u': uprint((u64)va_arg(&ap,idx++)); break; + case 'p': + case 'x': xprint((u64)va_arg(&ap,idx++)); break; + case 'c': printchar((char)(va_arg(&ap,idx++))); break; + case 's': kprint((char*)(va_arg(&ap,idx++))); break; + case 'f': fprint((u64)(va_arg(&ap,idx++))); break; + case '%': printchar('%'); break; + } + } + else printchar(c); + } while(c); +} + +u8 kgetch() +{ + u8 key; + while(keyboard_scan_code() == 0) + {__asm("hlt");} + key = keyboard_scan_code(); + keyboard_reset_irq1_vars(); + return key; +} + +dbcs_t kgetc() +{ + dbcs_t ascii; + while(keyboard_scan_code() == 0) + {__asm("hlt");} + ascii = keyboard_sym(); + keyboard_reset_irq1_vars(); + return ascii; +} + +void kgets(dbcs_t* buf,size_t cMax) +{ + dbcs_t ch; + dbcs_t* ptr,*end; + + ptr = buf; + end = buf + cMax; + *ptr = '\0'; + while((ch = kgetc()) != '\n') + { + if(ch == '\b') + { + if(ptr != buf) *ptr-- = '\0'; + printchar('\b'); + } + else if(ptr != end-1) + { + *ptr++ = ch; + printchar(ch); + } + } + printchar('\n'); + if(ptr == end) ptr--; + *ptr = '\0'; +} + +//static char* katoi_base = "0123456789ABCDEF"; + +static i64 _katoi(char* str,int base,size_t len) +{ + char* end; + i64 i,pow; + i64 num; + + i = 0; + num = 0; + pow = 1; + end = str+len-1; + while(1) + { + if(*end == '-') + { + num *= -1; + break; + } + else if(*end == 'x') break; + for(i = 0; i < base; i++) + if(*end == xnums[i]) break; + num += i*pow; + pow *= base; + + if(end == str) break; + end--; + } + + return num; +} + +static u64 _katou(char* str,int base,u64 len) +{ + char* end; + u64 pow,num; + i64 i; + + i = 0; + num = 0; + pow = 1; + end = str+len-1; + while(1) + { + if(*end == 'x') break; + for(i = 0; i < base; i++) + if(*end == xnums[i]) break; + num += i*pow; + pow *= base; + + if(end == str) break; + end--; + } + + return num; +} + +i64 katoi(char* str,int base) +{ + return _katoi(str,base,kstrlen(str)); +} + +u64 katou(char* str,int base) +{ + return _katou(str,base,kstrlen(str)); +} + +static u64 _kstrchr_delim(char* buf,u32 base) +{ + u64 i,len; + char c; + + len = 0; + while(*buf) + { + c = *buf; + for(i = 0; i < base; i++) + { + if(c == xnums[i]) break; + } + if(i == base && c != '-') break; + buf++; + len++; + } + return len; +} + +void ksscanf(char* buf,char* fmt,...) +{ + //ulong* argp; + va_list ap; + va_start(&ap); + + u64 idx; + ulong len,maxLen; + union { + i64* iptr; + u64* uptr; + char* sptr; + } u; + char c,*stk; + + idx = 2; + while((c = *fmt)) + { + //kprintf("%c %c\n",c,*buf); + if(c == '%') + { + c = *++fmt; + switch(c) + { + case 'u': + case 'd': + len = _kstrchr_delim(buf,10); + u.iptr = (i64*)(va_arg(&ap,idx++)); + *u.iptr = _katoi(buf,10,len); + buf += len; //we decrement because it will +1 + break; + case 'p': + case 'x': + buf += 2; //Skip 0x part + len = _kstrchr_delim(buf,16); + u.iptr = (i64*)(va_arg(&ap,idx++)); + *u.iptr = _katoi(buf,16,len); + buf += len; //we decrement because it will +1 + break; + case 's': + stk = (char*)kstrchr(buf,*(fmt+1)); + u.sptr = (char*)(va_arg(&ap,idx++)); + maxLen = (ulong)(va_arg(&ap,idx++)); + if(!stk) + { + u.sptr[0] = '\0'; + break; + } + len = (u64)stk-(u64)buf; + if(len > maxLen) len = maxLen; + kmemcpy(u.sptr,buf,len); + u.sptr[len] = '\0'; + buf += len; + break; + } + + } else buf++; + fmt++; + } +} diff --git a/kernel/stdlib.h b/kernel/stdlib.h new file mode 100644 index 0000000..dae4129 --- /dev/null +++ b/kernel/stdlib.h @@ -0,0 +1,45 @@ +#ifndef __STDLIB_H +#define __STDLIB_H + +#include "os.h" +#include "vga_terminal.h" +#include "string.h" + +//stdlib.h + +extern void kmemcpy(void* dst,const void* src,size_t len); +extern int kmemcmp(const void* dst,const void* src,size_t len); +extern void kmemzero(void* dst,size_t len); + +//termlib.h +#define kputc printchar + +void iprint(i64 number); +void uprint(u64 number); +void xprint(u64 number); + +void iprints(char* str,i64 number); +void uprints(char* str,u64 number); +void xprints(char* str,u64 number); + +void kprint(char* str); + +void ksprintf(char* dst,size_t maxLen,const char* fmt,...); +void kprintf(const char* fmt,...); + +//termio.h + +u8 kgetch(); //Wait for key scan code +dbcs_t kgetc(); //Wait for ASCII character + +void kgets(dbcs_t* buf,size_t cMax); + +i64 katoi(char* str,int base); + +void ksscanf(char* buf,char* fmt,...); + +#define _debug() \ + kprintf("_debug at %s:%u\n",__FILE__,__LINE__); \ + kgetc(); + +#endif diff --git a/kernel/string.c b/kernel/string.c new file mode 100644 index 0000000..b2e098a --- /dev/null +++ b/kernel/string.c @@ -0,0 +1,142 @@ +#include "string.h" +#include "stdlib.h" + +size_t kstrlen(const char* str) +{ + u32 len = 0; + while(*str++) len++; + return len; +} + +void kstrcpy(char* dst,const char* src) +{ + while((*dst++ = *src++)){} +} + +void kstrncpy(char* dst,const char* src,size_t maxLen) +{ + maxLen=-1; + while((*dst++ = *src++) && --maxLen){} + if(!maxLen) dst[maxLen] = '\0'; +} + +const char* kstrchr(const char* src,char chr) +{ + while(*src) + { + if(*src == chr) return src; + src++; + } + return NULL; +} + +const char* kstrrchr(const char* src,char chr) +{ + const char* ptr; + + ptr = src+kstrlen(src)-1; + while(ptr != src) + { + if(*ptr == chr) return ptr; + ptr--; + } + return NULL; +} + +int kstrcmp(const char* src,const char* dst) +{ + if(kstrlen(src) != kstrlen(dst)) return 1; + while(*src) + if(*src++ != *dst++) return 1; + return 0; +} + +int kstrncmp(const char* haystack,char* needle) +{ + return kmemcmp(haystack,needle,kstrlen(needle)); +} + +int kstrcasecmp(const char* src,const char* dst) +{ + if(kstrlen(src) != kstrlen(dst)) return 1; + while(*src) + { + kprintf("%c %c\n",ktolower(*src),ktolower(*dst)); + if(ktolower(*src++) != ktolower(*dst++)) return 1; + } + return 0; +} + +char ktoupper(char c) +{ + if(c >= 0x61 && c <= 0x7A) return c&0xDF; + return c; +} + +char ktolower(char c) +{ + if(c >= 0x41 && c <= 0x5A) return c|(1<<5); + return c; +} + +size_t kchrlen(char cchr) +{ + u8 chr = (u8)cchr; + + if(chr & 0b10000000) + { + if((chr>>5) == 0b110) return 2; + else if((chr>>4) == 0b1110) return 3; + else if((chr>>5) == 0b11110) return 4; + } + return 1; +} + +dbcs_t kchr2dbcs(const char* ptr) +{ + const u8* chr = (u8*)ptr; + + switch(kchrlen(chr[0])) + { + case 1: return chr[0]&0x7F; + case 2: return ((chr[0]&0x1F)<<6)|(chr[1]&0x3F); + case 3: return ((chr[0]&0x0F)<<12)|((chr[1]&0x3F)<<6)|(chr[2]&0x3F); + default: return 0x003F; + } +} + +size_t kdbcslen(dbcs_t chr) +{ + if(chr > 0x7FF) return 3; + else if(chr > 0x7F) return 2; + return 1; +} + +void kdbcs2str(dbcs_t* dbcs,char* str,size_t maxStr) +{ + char* end = str + maxStr - 1; + dbcs_t wc; + + while((wc = *dbcs++) && str != end) + { + size_t len = kdbcslen(wc); + if((str+len) >= end) break; + switch(len) + { + case 1: + *str++ = wc&0x7F; + break; + case 2: + *str++ = 0b11000000|((wc>>6)&0x1F); + *str++ = 0b10000000|((wc)&0x3F); + break; + case 3: + *str++ = 0b11100000|((wc>>12)&0x0F); + *str++ = 0b10000000|((wc>>6)&0x3F); + *str++ = 0b10000000|((wc)&0x3F); + break; + default: *str++ = '?'; + } + } + *str++ = '\0'; +} diff --git a/kernel/string.h b/kernel/string.h new file mode 100644 index 0000000..12fad8a --- /dev/null +++ b/kernel/string.h @@ -0,0 +1,31 @@ +#ifndef __STRING_H +#define __STRING_H + +#include "os.h" + +#define DBCS2SBCS(dbcs) ((char)(dbcs&0xFF)) + +typedef u16 dbcs_t; + +size_t kstrlen(const char* str); + +void kstrcpy(char* dst,const char* src); +void kstrncpy(char* dst,const char* src,size_t maxLen); + +const char* kstrchr(const char* src,char chr); +const char* kstrrchr(const char* src,char chr); + +int kstrcmp(const char* src,const char* dst); +int kstrncmp(const char* haystack,char* needle); +int kstrcasecmp(const char* src,const char* dst); + +char ktoupper(char c); +char ktolower(char c); + +size_t kchrlen(char chr); +dbcs_t kchr2dbcs(const char* chr); + +size_t kdbcslen(dbcs_t chr); +void kdbcs2str(dbcs_t* dbcs,char* str,size_t maxStr); + +#endif diff --git a/kernel/va_list.asm b/kernel/va_list.asm new file mode 100644 index 0000000..8673eb2 --- /dev/null +++ b/kernel/va_list.asm @@ -0,0 +1,41 @@ +section .text +global va_start +global va_arg + +va_start: + ; RDI va_list + mov rax,rsp + mov rsp,rdi + add rsp,0x30 + + push r9 + push r8 + push rcx + push rdx + push rsi + push rdi + + mov rsp,rax + ret + +va_arg: + ; RDI va_list + ; RSI index + push rbx + mov rbx,rsi + shl rbx,3 + + cmp rsi,6 + jge .va_stack + + mov rax,[rdi+rbx] + + pop rbx + ret +.va_stack: + sub rbx,0x30 + add rbx,0x10 + mov rax,[rbp+rbx] + + pop rbx + ret diff --git a/kernel/va_list.h b/kernel/va_list.h new file mode 100644 index 0000000..19ed40a --- /dev/null +++ b/kernel/va_list.h @@ -0,0 +1,13 @@ +#ifndef __VA_LIST_H +#define __VA_LIST_H + +#include "os.h" + +typedef struct { + u64 args[6]; +} va_list; + +extern void va_start(va_list*); +extern u64 va_arg(va_list*,u64); + +#endif diff --git a/kernel/vga_terminal.c b/kernel/vga_terminal.c new file mode 100644 index 0000000..1b7b164 --- /dev/null +++ b/kernel/vga_terminal.c @@ -0,0 +1,175 @@ +#include "vga_terminal.h" +//#include "paging.h" +#include "video.h" +#include "heap.h" +#include "string.h" +#include "stdlib.h" +#include "defines.h" +#include "bmp.h" +#include "os.h" +#include "io.h" + +static u8 s_cCurAttr = DEFAULT_COLOR; +u32 s_iX; +u32 s_iY; + +static u16* s_video_buffer = 0; +static int s_video_init = 0; + +static void draw_char(u16 sym,u32 color); + +static u32 vga_palette[] = { + 0x000000, + 0x0000AA, + 0x00AA00, + 0x00AAAA, + 0xAA0000, + 0xAA00AA, + 0xAA5500, + 0xAAAAAA, + + 0x555555, + 0x5555FF, + 0x55FF55, + 0x55FFFF, + 0xFF5555, + 0xFF55FF, + 0xFFFF55, + 0xFFFFFF, +}; + +void vga_terminal_init() +{ + s_video_buffer = (u16*)kmalloc(4000); + s_video_init = 1; + + lmem->vt_chars = 80; + lmem->vt_lines = 25; + lmem->vt_charw = lmem->v_width/lmem->vt_chars; + lmem->vt_charh = lmem->v_height/lmem->vt_lines; + + s_iX = 0; + s_iY = 0; +} + +void update_cursor() +{ + /*u16 pos; + pos = s_iY * 80 + s_iX; + + outb(0x3D4, 0x0F); + outb(0x3D5, (u8) (pos & 0xFF)); + outb(0x3D4, 0x0E); + outb(0x3D5, (u8) ((pos >> 8) & 0xFF));*/ +} + +void cls() +{ + if(!s_video_init) return; + //kmemzero((void*)s_video_buffer,sizeof(u16)*80*25); + video_clear(); + s_iX = s_iY = 0; + update_cursor(); +} + +void shiftscreen(); + +static void draw_char(u16 sym,u32 color) +{ + if(!sym && !color) + { + video_rect_zero(s_iX*lmem->vt_charw,s_iY*lmem->vt_charh, + lmem->vt_charw,lmem->vt_charh); + } + video_char(s_iX*lmem->vt_charw,s_iY*lmem->vt_charh, + lmem->vt_charw,lmem->vt_charh,color,sym); +} + +void printchar(u16 c) +{ + if(!s_video_init) return; + if(c == '\n' || c == '\r' || c == '\t' || c == '\b') // Control characters + { + if(c == '\r') s_iX = 0; + else if(c == '\n') s_iX = SCR_CHARS; + else if(c == '\t') s_iX = (s_iX + 8) & ~7; + else if(c == '\b') + { + if(s_iX) s_iX--; + else if(s_iY) + { + s_iY--; + s_iX = SCR_CHARS-1; + } + //Remove character + //SCR_TEXT_BUF[s_iY*SCR_CHARS+s_iX] = SCR_ENTRY(0,s_cCurAttr); + draw_char(0,0); + } + } + else // Text characters + { + //SCR_TEXT_BUF[s_iY*SCR_CHARS+s_iX++] = SCR_ENTRY(c,s_cCurAttr); + draw_char(c,vga_palette[s_cCurAttr]); + s_iX++; + } + + if(s_iX > SCR_CHARS-1) + { + s_iX = 0; + if(s_iY < SCR_LINES-1) + s_iY++; + else shiftscreen(); + } + + update_cursor(); +} + +void printbmp(u8* bmp) +{ + //scroll + //u64 scroll = s_iY + u32 h = *(u32*)(bmp+0x16); + h = MIN(h,lmem->v_height); + u64 lines = (h/lmem->vt_charh) + 1; + kprintf("lines %u\n",lines); + for(u64 i = 0; i < lines; i++) kputc('\n'); + bmp_draw(s_iX*lmem->vt_charw,(s_iY-lines-1)*lmem->vt_charh, + 0,h,bmp); +} + +void shiftscreen() +{ + u32 y; + if(!s_video_init) return; + video_line_zero(0,lmem->vt_charh); + for(y = 1; y < lmem->vt_lines; y++) + { + video_line_copy(y*lmem->vt_charh,(y-1)*lmem->vt_charh, + lmem->vt_charh); + } + + video_line_zero(lmem->vt_charh*(lmem->vt_lines-1), + lmem->vt_charh); +} + +void chg_color(u8 color) +{ + s_cCurAttr = color; +} + +void print(const char* str) +{ + while(*str) + { + printchar(kchr2dbcs(str)); + str += kchrlen(*str); + } +} + +void move_to_next_char(){} +void move_to_next_line(){} +void locate(int h, int w) +{ + s_iX = w; + s_iY = h; +} diff --git a/kernel/vga_terminal.h b/kernel/vga_terminal.h new file mode 100644 index 0000000..2e39272 --- /dev/null +++ b/kernel/vga_terminal.h @@ -0,0 +1,68 @@ +#ifndef __VGA_TERMINAL_H +#define __VGA_TERMINAL_H + +#include "os.h" + +#define SCR_CHARS 80 +#define SCR_LINES 25 +//#define SCR_TEXT_BUF ((u16*)0xB8000) +#define SCR_TEXT_BUF ((u16*)OS_VIDEO_BUFFER) +#define SCR_ENTRY(ch,col) ((col<<8)|ch) + +#define BLACK 0 +#define BLUE 1 +#define GREEN 2 +#define CYAN 2 +#define RED 4 +#define GRAY 8 +#define WHITE 15 +#define MAGENTA 13 + +#define BG_BLACK (0<<4) +#define BG_BLUE (1<<4) +#define BG_GREEN (2<<4) +#define BG_RED (4<<4) +#define BG_GRAY (8<<4) +#define BG_WHITE (15<<4) + +#define DEFAULT_COLOR BG_BLACK|7 + +enum vga_color { + VGA_COLOR_BLACK = 0, + VGA_COLOR_BLUE = 1, + VGA_COLOR_GREEN = 2, + VGA_COLOR_CYAN = 3, + VGA_COLOR_RED = 4, + VGA_COLOR_MAGENTA = 5, + VGA_COLOR_BROWN = 6, + VGA_COLOR_LIGHT_GREY = 7, + VGA_COLOR_DARK_GREY = 8, + VGA_COLOR_LIGHT_BLUE = 9, + VGA_COLOR_LIGHT_GREEN = 10, + VGA_COLOR_LIGHT_CYAN = 11, + VGA_COLOR_LIGHT_RED = 12, + VGA_COLOR_LIGHT_MAGENTA = 13, + VGA_COLOR_LIGHT_BROWN = 14, + VGA_COLOR_WHITE = 15, +}; + +static inline u8 vga_entry_color(enum vga_color fg, enum vga_color bg) { + return fg | bg << 4; +} + +static inline u16 vga_entry(unsigned char uc, u8 color) { + return (u16) uc | (u16) color << 8; +} + +void vga_terminal_init(); + +void cls(); +void shiftscreen(); +void printchar(u16 c); +void printbmp(u8* bmp); +void chg_color(u8 color); +void print(const char* str); +void locate(int h, int w); + + +#endif diff --git a/kernel/video.c b/kernel/video.c new file mode 100644 index 0000000..0c8a703 --- /dev/null +++ b/kernel/video.c @@ -0,0 +1,140 @@ +#include "video.h" +#include "heap.h" +#include "paging.h" +#include "stdlib.h" +#include "defines.h" +#include "multiboot.h" +#include "string.h" + +extern u8* x64_get_font(); + +void video_pixel(u64 x,u64 y,u32 color) +{ + u64 off = (y*lmem->v_stride) + (x*lmem->v_bpp); + + if(lmem->v_bpp == 3) + { + u32 dat = (*(u32*)&lmem->v_mem[off]) & 0xFF000000; + lmem->v_mem[off] = (color & 0x00FFFFFF) | dat; + } + else *(u32*)(lmem->v_mem+off) = color; +} + +static u8* video_font_get_bitmap(u16 sym) +{ + u64 i; + for(i = 0; i < lmem->vf_chars; i++) + if(lmem->vf_encodings[i] == sym) break; + if(i == lmem->vf_chars) return NULL; + return &lmem->vf_bitmaps[i<<4]; +} + +void video_char(u64 x,u64 y,u64 sizew,u64 sizeh,u32 color,u16 sym) +{ + //h size is always twice + u64 f_w = (sizew<<32) / (8ULL<<16ULL); + u64 f_h = (sizeh<<32) / (16ULL<<16ULL); + u8* bmap; + + bmap = video_font_get_bitmap(sym); + if(!bmap) + { + x64_rax_n_stop(0xDEADBEEF); + return; + } + u64 c_y = y; + for(u64 i = 0; i < 16; i++) + { + u64 c_x = x; + for(u64 j = 0; j < 8; j++) + { + if((bmap[i]>>(7-j)) & 1) + { + for(u64 k = 0; k < (f_w>>16); k++) + { + video_pixel(c_x+k,c_y,color); + for(u64 l = 1; l < (f_h>>16); l++) + video_pixel(c_x+k,c_y+l,color); + } + } + c_x = ((c_x<<16) + f_w) >> 16; + } + c_y = ((c_y<<16) + f_h) >> 16; + } +} + +void video_rect_zero(u64 x,u64 y,u64 w,u64 h) +{ + u64 len = w*lmem->v_bpp; + for(u32 i = 0; i < h; i++) + { + u32* line = (u32*)&lmem->v_mem[(y+i)*lmem->v_stride+(x*lmem->v_bpp)]; + kmemzero(line,len); + } +} + +void video_line_copy(u64 ysrc,u64 ydst,u64 height) +{ + kmemcpy(lmem->v_mem+(ydst*lmem->v_stride), + lmem->v_mem+(ysrc*lmem->v_stride), + lmem->v_stride*height); +} + +void video_line_zero(u64 y,u64 height) +{ + kmemzero(lmem->v_mem+(y*lmem->v_stride), + height*lmem->v_stride); +} + +void video_clear() +{ + kmemzero(lmem->v_mem,lmem->v_size); +} + +void video_swap() +{ + //kmemcpy(lmem->v_mem,lmem->v_mem,lmem->v_size); +} + +void video_init() +{ + multiboot_hdr_t* hdr = (multiboot_hdr_t*)lmem->multiboot; + + lmem->v_stride = hdr->framebuffer_pitch; + lmem->v_width = hdr->framebuffer_width; + lmem->v_height = hdr->framebuffer_height; + lmem->v_mem = (u8*)hdr->framebuffer_addr; + lmem->v_bpp = hdr->framebuffer_bpp>>3; + lmem->v_size = lmem->v_stride*lmem->v_height; + + lmem->v_r_p = *((u8*)hdr+110); + lmem->v_r_s = *((u8*)hdr+111); + lmem->v_g_p = *((u8*)hdr+112); + lmem->v_g_s = *((u8*)hdr+113); + lmem->v_b_p = *((u8*)hdr+114); + lmem->v_b_s = *((u8*)hdr+115); + + u64 size = lmem->v_stride*lmem->v_height; + for(u64 i = 0; i < (size>>12)+1; i++) + { + page_map((void*)((u64)lmem->v_mem+(i<<12)), + (void*)((u64)lmem->v_mem+(i<<12)),4096); + } + + u8* font = x64_get_font(); + + lmem->vf_chars = *(u64*)font; + lmem->vf_wchar = (8ULL<<32ULL) / (lmem->v_width<<16); + lmem->vf_hchar = (16ULL<<32ULL) / (lmem->v_height<<16); + + //lmem->vf_encodings = (u16*)(font + 8); + //lmem->vf_bitmaps = (u8*)ROUND2_UP(((u64)lmem->vf_encodings + // + (lmem->vf_chars<<1)),3); + lmem->vf_encodings = (u16*)kmalloc(lmem->vf_chars<<1); + lmem->vf_bitmaps = (u8*)kmalloc(lmem->vf_chars<<4); + + kmemcpy(lmem->vf_encodings,font+8,lmem->vf_chars<<1); + kmemcpy(lmem->vf_bitmaps,font+8+(lmem->vf_chars<<1),lmem->vf_chars<<4); + + //video_char(0,0,400,228,0x00FF00FF,kchr2dbcs("й")); +} diff --git a/kernel/video.h b/kernel/video.h new file mode 100644 index 0000000..6adfcd9 --- /dev/null +++ b/kernel/video.h @@ -0,0 +1,16 @@ +#ifndef __VIDEO_H +#define __VIDEO_H + +#include "os.h" + +void video_pixel(u64 x,u64 y,u32 color); +void video_char(u64 x,u64 y,u64 sizew,u64 sizeh,u32 color,u16 sym); +void video_rect_zero(u64 x,u64 y,u64 w,u64 h); +void video_line_copy(u64 ysrc,u64 ydst,u64 height); +void video_line_zero(u64 y,u64 height); +void video_clear(); + +void video_swap(); +void video_init(); + +#endif diff --git a/kernel/x64font.asm b/kernel/x64font.asm new file mode 100644 index 0000000..00a7ce3 --- /dev/null +++ b/kernel/x64font.asm @@ -0,0 +1,12 @@ +section .rdata +global x64_get_font + +align 8 +x64_font_bin: + incbin "font.bin" + +section .text + +x64_get_font: + mov rax,x64_font_bin + ret diff --git a/kernel/x64idt.asm b/kernel/x64idt.asm new file mode 100644 index 0000000..d33e603 --- /dev/null +++ b/kernel/x64idt.asm @@ -0,0 +1,18 @@ +section .text +global _idt_install + +_idt_install: + mov rax,idt_base + mov qword [rax],rdi + mov rax,idt_limit + mov word [rax],si + + mov rax,idt_desc + lidt [rax] + ret + +section .data +align 16 +idt_desc: + idt_limit dw 0 + idt_base dq 0 diff --git a/kernel/x64ints.asm b/kernel/x64ints.asm new file mode 100644 index 0000000..68d2da6 --- /dev/null +++ b/kernel/x64ints.asm @@ -0,0 +1,89 @@ +section .text +extern idt_call_handler + +%macro push_regs 0 + pushfq + push rax + push rbx + push rcx + push rdx + push rsi + push rdi + push rbp + ;push rsp + push r8 + push r9 + push r10 + push r11 + push r12 + push r13 + push r14 + push r15 +%endmacro + +%macro pop_regs 0 + pop r15 + pop r14 + pop r13 + pop r12 + pop r11 + pop r10 + pop r9 + pop r8 + ;pop rsp + pop rbp + pop rdi + pop rsi + pop rdx + pop rcx + pop rbx + pop rax + popfq +%endmacro + +%macro int_handler 1 +global int%1_handler + +int%1_handler: + push_regs + + mov rdi,%1 + call idt_call_handler + + pop_regs + iretq + +%endmacro + +int_handler 0 +int_handler 1 +int_handler 2 +int_handler 3 +int_handler 4 +int_handler 5 +int_handler 6 +int_handler 7 +int_handler 8 +int_handler 9 +int_handler 10 +int_handler 11 +int_handler 12 +int_handler 13 +int_handler 14 +int_handler 15 +int_handler 16 +int_handler 17 +int_handler 18 +int_handler 19 +int_handler 20 +int_handler 21 +int_handler 22 +int_handler 23 +int_handler 24 +int_handler 25 +int_handler 26 +int_handler 27 +int_handler 28 +int_handler 29 +int_handler 30 +int_handler 31 diff --git a/kernel/x64io.asm b/kernel/x64io.asm new file mode 100644 index 0000000..d9f1d17 --- /dev/null +++ b/kernel/x64io.asm @@ -0,0 +1,80 @@ +section .text +global inb +global outb +global inw +global outw +global inl +global outl +global _insw +global _outsw +global _insw256 +global _outsw256 + +inb: + mov rdx,rdi + in al,dx + ret + +outb: + mov rdx,rdi + mov rax,rsi + out dx,al + ret + +inw: + mov rdx,rdi + in ax,dx + ret + +outw: + mov rdx,rdi + mov rax,rsi + out dx,ax + ret + +inl: + mov rdx,rdi + in eax,dx + ret + +outl: + mov rdx,rdi + mov rax,rsi + out dx,eax + ret + +_insw: + ; 1 - RDI port + ; 2 - RSI buf + ; 3 - RDX count + mov rcx,rdx + mov rdx,rdi + mov rdi,rsi + rep insw + ret + +_outsw: + ; 1 - RDI port + ; 2 - RSI buf + ; 3 - RDX count + mov rcx,rdx + mov rdx,rdi + rep outsw + ret + +_insw256: + ; 1 - RDI port + ; 2 - RSI buf + mov rdx,rdi + mov rdi,rsi + mov rcx,0x100 + rep insw + ret + +_outsw256: + ; 1 - RDI port + ; 2 - RSI buf + mov rdx,rdi + mov rcx,0x100 + rep outsw + ret diff --git a/kernel/x64stdlib.asm b/kernel/x64stdlib.asm new file mode 100644 index 0000000..2dcaa0a --- /dev/null +++ b/kernel/x64stdlib.asm @@ -0,0 +1,56 @@ +section .text +global kmemcpy +global kmemcmp +global kmemzero + +kmemcpy: + ; RDI dst + ; RSI src + ; RDX size + mov rcx,rdx + shr rcx,3 + rep movsq + + mov rcx,rdx + and rcx,7 + rep movsb + ret + +kmemcmp: + mov rcx,rdx + shr rcx,3 + jz .test1 +.cmp8: + cmpsq + jnz .not_equal + loop .cmp8 + +.test1: + mov rcx,rdx + and rcx,7 +.cmp1: + cmpsb + jnz .not_equal + loop .cmp1 + + jmp .equal +.not_equal: + xor eax,eax + inc eax + ret +.equal: + xor eax,eax + ret + +kmemzero: + xor rax,rax + + mov rcx,rsi + shr rcx,3 + rep stosq + + mov rcx,rsi + and rcx,7 + rep stosb + + ret diff --git a/kernel/x64utils.asm b/kernel/x64utils.asm new file mode 100644 index 0000000..abdd784 --- /dev/null +++ b/kernel/x64utils.asm @@ -0,0 +1,10 @@ +section .text +global x64_get_cr2 +global x64_rax_n_stop + +x64_get_cr2: + mov rax,cr2 + ret +x64_rax_n_stop: + mov rax,rdi + jmp $ diff --git a/kernel_old/ahci.c b/kernel_old/ahci.c new file mode 100644 index 0000000..7d51d91 --- /dev/null +++ b/kernel_old/ahci.c @@ -0,0 +1,169 @@ +#include "ahci.h" +#include "pci.h" +#include "pit.h" +#include "io.h" +#include "paging.h" +#include "stdlib.h" + +typedef struct { + u32 hba_phys; + hba_port_t* sata; + hba_port_t* atapi; +} ahci_t; + +static ahci_t s_ahci; +static hba_mem_t* HBA; + +static __align(4096) u16 buf[256]; + +void sata_identify() +{ + hba_cmd_header_t* cmdhdr = (hba_cmd_header_t*)s_ahci.sata->clb; + hba_cmd_tbl_t* cmdtbl = (hba_cmd_tbl_t*)cmdhdr->ctba; + fis_reg_h2d_t* fis = (fis_reg_h2d_t*)&cmdtbl->cfis; + kprintf("cmdhdr %x cmdtbl %x fis %x\n",cmdhdr,cmdtbl,fis); + s_ahci.sata->is = 0xFFFFFFFF; + + cmdhdr->cfl = sizeof(fis_reg_h2d_t)/sizeof(u32); + cmdhdr->w = 0; + cmdhdr->prdtl = 1; + + kmemzero(cmdtbl, sizeof(hba_cmd_tbl_t) + + (cmdhdr->prdtl-1)*sizeof(hba_prdt_entry_t)); + + kmemzero(fis,sizeof(fis_reg_h2d_t)); + /*fis->fis_type = FIS_TYPE_REG_H2D; + fis->c = 1; + fis->command = ATA_CMD_IDENTIFY; + fis->device = ATA_LBA_MODE; // Master*/ + + fis->fis_type = FIS_TYPE_REG_H2D; + fis->c = 1; + fis->command = 0xEC; + + fis->lba0 = 0; + fis->lba1 = 0; + fis->lba2 = 0; + fis->device = ATA_LBA_MODE; + fis->lba3 = 0; + fis->lba4 = 0; + fis->lba5 = 0; + + fis->countl = 1; + fis->counth = 0; + + kmemzero(&cmdtbl->prdt_entry[0],sizeof(hba_prdt_entry_t)); + cmdtbl->prdt_entry[0].dba = page_v2p((u32)buf); + cmdtbl->prdt_entry[0].dbc = 511; // 512 bytes + cmdtbl->prdt_entry[0].i = 0; + + kprintf("s_ahci.sata->tfd %x\n",s_ahci.sata->tfd); + kprintf("s_ahci.sata->ci %x\n",s_ahci.sata->ci); + kprintf("s_ahci.sata->sact %x\n",s_ahci.sata->sact); + _debug(); + + //Wait before executing new commands + while(s_ahci.sata->tfd & (ATA_DEV_BUSY|ATA_DEV_DRQ)) + { + kprintf("wait to issue cmd\n"); + } + + s_ahci.sata->ci = (1<<0); + + while((s_ahci.sata->ci & (1<<0)) != 0) + { + if(s_ahci.sata->is & (1<<5)) + { + kprintf("disk error\n"); + return; + } + kprintf("wait\n"); + } + + kprintf("IDENTIFY command executed!\n"); + kprintf("%x %x %u",buf,buf[83],*(u32*)&buf[60]); + +} + + + +void ahci_init() +{ + pci_device_t ahci; + u32 bar; + + //Use PCI + ahci = pci_find_device(0x01,0x06); + if(ahci == 0) + { + kprintf("AHCI not found!\n"); + return; + } + bar = pci_read_config_word_dev(ahci,0x24); + s_ahci.hba_phys = bar & 0xFFFFFFF0; + + kprintf("HBA %x\n",s_ahci.hba_phys); + //Identity map + page_map(s_ahci.hba_phys,s_ahci.hba_phys, + 16384,PAGE_TABLE_READWRITE); + HBA = (hba_mem_t*)s_ahci.hba_phys; + + HBA->ghc |= (1<<31); //Enable GHC.AE + if(HBA->cap & (1<<27)) + { + kprintf("AHCI supports stagered spin-up\n"); + } + + //kprintf("pi %x\n",HBA->pi); + for(u32 i = 0; i < 32; i++) + { + hba_port_t* port = &HBA->ports[i]; + if(!((HBA->pi>>i)&1)) continue; + switch(port->sig) + { + case SATA_SIG_ATA: s_ahci.sata = port; break; + case SATA_SIG_ATAPI: s_ahci.atapi = port; break; + } + + //Initialize port + if(port->cmd & (SCMD_ST|SCMD_FR|SCMD_CR|SCMD_FRE)) //Isn't IDLE + { + port->cmd &= ~SCMD_ST; + while(port->cmd & SCMD_CR) + { + sleep(1000); + } + + port->cmd &= ~SCMD_FRE; + while(port->cmd & SCMD_FR) + { + sleep(1000); + } + } + + //Start it again + port->cmd |= SCMD_ST|SCMD_FRE; + + //Clear SERR + port->serr = 0xFFFFFFFF; + port->ie = 0; + + u32 data = port->is; + port->is = data; + } + + HBA->is = 0; + + page_map(s_ahci.sata->clb,s_ahci.sata->clb, + AHCI_CLB_SIZE,PAGE_DIR_READWRITE); + page_map(s_ahci.sata->fb,s_ahci.sata->fb, + AHCI_FB_SIZE,PAGE_DIR_READWRITE); + + page_map(s_ahci.atapi->clb,s_ahci.sata->clb, + AHCI_CLB_SIZE,PAGE_DIR_READWRITE); + page_map(s_ahci.atapi->fb,s_ahci.sata->fb, + AHCI_FB_SIZE,PAGE_DIR_READWRITE); + + //Initialize SATA and ATAPI + //sata_identify(); +} diff --git a/kernel_old/ahci.h b/kernel_old/ahci.h new file mode 100644 index 0000000..b4436dd --- /dev/null +++ b/kernel_old/ahci.h @@ -0,0 +1,315 @@ +#ifndef __AHCI_H +#define __AHCI_H + +#include "os.h" + +#define SATA_SIG_ATA 0x00000101 // SATA drive +#define SATA_SIG_ATAPI 0xEB140101 // SATAPI drive +#define SATA_SIG_SEMB 0xC33C0101 // Enclosure management bridge +#define SATA_SIG_PM 0x96690101 // Port multiplier + +#define ATA_DEV_BUSY (1<<7) +#define ATA_DEV_DRQ (1<<3) + +typedef struct { + u32 clb; // 0x00, command list base address, 1K-byte aligned + u32 clbu; // 0x04, command list base address upper 32 bits + u32 fb; // 0x08, FIS base address, 256-byte aligned + u32 fbu; // 0x0C, FIS base address upper 32 bits + u32 is; // 0x10, interrupt status + u32 ie; // 0x14, interrupt enable + u32 cmd; // 0x18, command and status + u32 rsv0; // 0x1C, Reserved + u32 tfd; // 0x20, task file data + u32 sig; // 0x24, signature + u32 ssts; // 0x28, SATA status (SCR0:SStatus) + u32 sctl; // 0x2C, SATA control (SCR2:SControl) + u32 serr; // 0x30, SATA error (SCR1:SError) + u32 sact; // 0x34, SATA active (SCR3:SActive) + u32 ci; // 0x38, command issue + u32 sntf; // 0x3C, SATA notification (SCR4:SNotification) + u32 fbs; // 0x40, FIS-based switch control + u32 rsv1[11]; // 0x44 ~ 0x6F, Reserved + u32 vendor[4]; // 0x70 ~ 0x7F, vendor specific +} hba_port_t; + +typedef struct +{ + // 0x00 - 0x2B, Generic Host Control + u32 cap; // 0x00, Host capability + u32 ghc; // 0x04, Global host control + u32 is; // 0x08, Interrupt status + u32 pi; // 0x0C, Port implemented + u32 vs; // 0x10, Version + u32 ccc_ctl; // 0x14, Command completion coalescing control + u32 ccc_pts; // 0x18, Command completion coalescing ports + u32 em_loc; // 0x1C, Enclosure management location + u32 em_ctl; // 0x20, Enclosure management control + u32 cap2; // 0x24, Host capabilities extended + u32 bohc; // 0x28, BIOS/OS handoff control and status + + // 0x2C - 0x9F, Reserved + u8 rsv[116]; + + // 0xA0 - 0xFF, Vendor specific registers + u8 vendor[96]; + + // 0x100 - 0x10FF, Port control registers + hba_port_t ports[32]; +} hba_mem_t; + +typedef enum +{ + FIS_TYPE_REG_H2D = 0x27, // Register FIS - host to device + FIS_TYPE_REG_D2H = 0x34, // Register FIS - device to host + FIS_TYPE_DMA_ACT = 0x39, // DMA activate FIS - device to host + FIS_TYPE_DMA_SETUP = 0x41, // DMA setup FIS - bidirectional + FIS_TYPE_DATA = 0x46, // Data FIS - bidirectional + FIS_TYPE_BIST = 0x58, // BIST activate FIS - bidirectional + FIS_TYPE_PIO_SETUP = 0x5F, // PIO setup FIS - device to host + FIS_TYPE_DEV_BITS = 0xA1, // Set device bits FIS - device to host +} fis_type_t; + +typedef struct +{ + // DWORD 0 + u8 fis_type; // FIS_TYPE_REG_H2D + + u8 pmport:4; // Port multiplier + u8 rsv0:3; // Reserved + u8 c:1; // 1: Command, 0: Control + + u8 command; // Command register + u8 featurel; // Feature register, 7:0 + + // DWORD 1 + u8 lba0; // LBA low register, 7:0 + u8 lba1; // LBA mid register, 15:8 + u8 lba2; // LBA high register, 23:16 + u8 device; // Device register + + // DWORD 2 + u8 lba3; // LBA register, 31:24 + u8 lba4; // LBA register, 39:32 + u8 lba5; // LBA register, 47:40 + u8 featureh; // Feature register, 15:8 + + // DWORD 3 + u8 countl; // Count register, 7:0 + u8 counth; // Count register, 15:8 + u8 icc; // Isochronous command completion + u8 control; // Control register + + // DWORD 4 + u8 rsv1[4]; // Reserved +} fis_reg_h2d_t; + +typedef struct +{ + // DWORD 0 + u8 fis_type; // FIS_TYPE_REG_D2H + + u8 pmport:4; // Port multiplier + u8 rsv0:2; // Reserved + u8 i:1; // Interrupt bit + u8 rsv1:1; // Reserved + + u8 status; // Status register + u8 error; // Error register + + // DWORD 1 + u8 lba0; // LBA low register, 7:0 + u8 lba1; // LBA mid register, 15:8 + u8 lba2; // LBA high register, 23:16 + u8 device; // Device register + + // DWORD 2 + u8 lba3; // LBA register, 31:24 + u8 lba4; // LBA register, 39:32 + u8 lba5; // LBA register, 47:40 + u8 rsv2; // Reserved + + // DWORD 3 + u8 countl; // Count register, 7:0 + u8 counth; // Count register, 15:8 + u8 rsv3[2]; // Reserved + + // DWORD 4 + u8 rsv4[4]; // Reserved +} fis_reg_d2h_t; + +typedef struct +{ + // DWORD 0 + u8 fis_type; // FIS_TYPE_DATA + + u8 pmport:4; // Port multiplier + u8 rsv0:4; // Reserved + + u8 rsv1[2]; // Reserved + + // DWORD 1 ~ N + u32 data[1]; // Payload +} fis_data_t; + +typedef struct +{ + // DWORD 0 + u8 fis_type; // FIS_TYPE_PIO_SETUP + + u8 pmport:4; // Port multiplier + u8 rsv0:1; // Reserved + u8 d:1; // Data transfer direction, 1 - device to host + u8 i:1; // Interrupt bit + u8 rsv1:1; + + u8 status; // Status register + u8 error; // Error register + + // DWORD 1 + u8 lba0; // LBA low register, 7:0 + u8 lba1; // LBA mid register, 15:8 + u8 lba2; // LBA high register, 23:16 + u8 device; // Device register + + // DWORD 2 + u8 lba3; // LBA register, 31:24 + u8 lba4; // LBA register, 39:32 + u8 lba5; // LBA register, 47:40 + u8 rsv2; // Reserved + + // DWORD 3 + u8 countl; // Count register, 7:0 + u8 counth; // Count register, 15:8 + u8 rsv3; // Reserved + u8 e_status; // New value of status register + + // DWORD 4 + u16 tc; // Transfer count + u8 rsv4[2]; // Reserved +} fis_pio_setup_t; + +typedef struct +{ + // DWORD 0 + u8 fis_type; // FIS_TYPE_DMA_SETUP + + u8 pmport:4; // Port multiplier + u8 rsv0:1; // Reserved + u8 d:1; // Data transfer direction, 1 - device to host + u8 i:1; // Interrupt bit + u8 a:1; // Auto-activate. Specifies if DMA Activate FIS is needed + + u8 rsved[2]; // Reserved + + //DWORD 1&2 + + u64 DMAbufferID; // DMA Buffer Identifier. Used to Identify DMA buffer in host memory. SATA Spec says host specific and not in Spec. Trying AHCI spec might work. + + //DWORD 3 + u32 rsvd; //More reserved + + //DWORD 4 + u32 DMAbufOffset; //Byte offset into buffer. First 2 bits must be 0 + + //DWORD 5 + u32 TransferCount; //Number of bytes to transfer. Bit 0 must be 0 + + //DWORD 6 + u32 resvd; //Reserved + +} fis_dma_setup_t; + +typedef struct +{ + // 0x00 + fis_dma_setup_t dsfis; // DMA Setup FIS + u8 pad0[4]; + + // 0x20 + fis_pio_setup_t psfis; // PIO Setup FIS + u8 pad1[12]; + + // 0x40 + fis_reg_d2h_t rfis; // Register – Device to Host FIS + u8 pad2[4]; + + // 0x58 + u64 sdbfis; // Set Device Bit FIS + + // 0x60 + u8 ufis[64]; + + // 0xA0 + u8 rsv[0x100-0xA0]; +} hba_fis_t; + +typedef struct +{ + // DW0 + u8 cfl:5; // Command FIS length in DWORDS, 2 ~ 16 + u8 a:1; // ATAPI + u8 w:1; // Write, 1: H2D, 0: D2H + u8 p:1; // Prefetchable + + u8 r:1; // Reset + u8 b:1; // BIST + u8 c:1; // Clear busy upon R_OK + u8 rsv0:1; // Reserved + u8 pmp:4; // Port multiplier port + + u16 prdtl; // Physical region descriptor table length in entries + + // DW1 + u32 prdbc; // Physical region descriptor byte count transferred + + // DW2, 3 + u32 ctba; // Command table descriptor base address + u32 ctbau; // Command table descriptor base address upper 32 bits + + // DW4 - 7 + u32 rsv1[4]; // Reserved +} hba_cmd_header_t; + +typedef struct +{ + u32 dba; // Data base address + u32 dbau; // Data base address upper 32 bits + u32 rsv0; // Reserved + + // DW3 + u32 dbc:22; // Byte count, 4M max + u32 rsv1:9; // Reserved + u32 i:1; // Interrupt on completion +} hba_prdt_entry_t; + +typedef struct +{ + // 0x00 + u8 cfis[64]; // Command FIS + + // 0x40 + u8 acmd[16]; // ATAPI command, 12 or 16 bytes + + // 0x50 + u8 rsv[48]; // Reserved + + // 0x80 + hba_prdt_entry_t prdt_entry[1]; // Physical region descriptor table entries, 0 ~ 65535 +} hba_cmd_tbl_t; + +void sata_identify(); +void ahci_init(); + +#define AHCI_CLB_SIZE ((sizeof(hba_cmd_header_t)*32)+4096) +#define AHCI_FB_SIZE ((sizeof(hba_fis_t)*32)+4096) + +#define SCMD_ST (1<<0) +#define SCMD_CR (1<<15) +#define SCMD_FR (1<<14) +#define SCMD_FRE (1<<4) + +#define ATA_LBA_MODE 0x40 +#define ATA_CMD_IDENTIFY 0xEC + +#endif diff --git a/kernel_old/ata_pio.c b/kernel_old/ata_pio.c new file mode 100644 index 0000000..bdba235 --- /dev/null +++ b/kernel_old/ata_pio.c @@ -0,0 +1,122 @@ +#include "ata_pio.h" +#include "io.h" +#include "pic.h" +#include "idt.h" +#include "pci.h" +#include "exceptions.h" +#include "stdlib.h" + +typedef struct { + u8 buf[512]; + u16 io_base; + u16 ctrl_base; + u32 slavebit; + u32 wait; +} ata_pio_t; + +static ata_pio_t s_ata; + +void ata_interrupt_master(int idx) +{ + s_ata.wait = 0; + kprintf("interrupt happend\n"); +} + +void ata_wait() +{ + __asm("cli"); + s_ata.wait = 1; + __asm("sti"); + do { + __asm("hlt"); + } while(s_ata.wait); +} + +void ata_init_drive(u8 drv,u8 slavebit) +{ + u8 poll; + + if(!slavebit) + { + s_ata.io_base = slavebit ? 0x170 : 0xC080; + s_ata.ctrl_base = 0x3E6; + } + else + { + s_ata.io_base = slavebit ? 0x168 : 0x1E8; + s_ata.ctrl_base = 0x366; + } + + kprintf("s_ata.io_base %x\ns_ata.ctrl_base %x\n", + s_ata.io_base,s_ata.ctrl_base); + + outb(s_ata.io_base + ATA_DRV,slavebit ? 0xB0 : 0xA0); + + outb(s_ata.io_base + ATA_LBALO,0); + outb(s_ata.io_base + ATA_LBAMID,0); + outb(s_ata.io_base + ATA_LBAHI,0); + + outb(s_ata.io_base + ATA_COMMAND,ATA_CMD_IDENTIFY); + + if(inb(s_ata.io_base + ATA_STATUS) == 0) return; + // Poll status + while((poll=inb(s_ata.io_base + ATA_STATUS)) & ATA_STS_BSY) + { + if(poll == 0xFF) + { + kprintf("ATA Drive not found!\n"); + return; + } + kprintf("polling 1 (%x)\n",inb(s_ata.io_base + ATA_STATUS)); + } + if(inb(s_ata.io_base + ATA_LBAMID) | s_ata.io_base + ATA_LBAHI) + { + kprintf("Non-ATA\n"); + return; // Non-ATA + } + // Wait DRQ + while((inb(s_ata.io_base + ATA_STATUS) & ATA_STS_DRQ) == 0) + { + kprintf("polling 2\n"); + if(inb(s_ata.io_base + ATA_STATUS) & ATA_STS_ERR) + { + kprintf("ATA_STS_ERR\n"); + return; + } + } + // Read data + _insw256(s_ata.io_base + ATA_DATA,s_ata.buf); + + kprintf("LBA size %u\n",*(u32*)(&s_ata.buf[0xC0])); +} + +void ata_init() +{ + pci_device_t sata; + u32 irq; + u32 bar[6]; + + + //Use PCI + sata = pci_find_device(0x01,0x06); + if(sata == 0) + { + kprintf("Serial ATA not found!\n"); + return; + } + + kprintf("SATA %x\n",sata); + for(u32 i = 0; i < 6; i++) + { + bar[i] = pci_read_config_word_dev(sata,0x10+(i<<2)); + kprintf("bar%u %x\n",i,bar[i]); + } + irq = pci_read_config_word_dev(sata,0x3C)&0xFF; + kprintf("SATA irq %u\n",irq); + kprintf("SATA prog_if %x\n",(pci_read_config_word_dev(sata,0x08)&0x0000FF00)>>8); + + pic_set_mask(14,1); + idt_setup(_int14_handler,ata_interrupt_master, + 46,IDT_TYPE_INTERRUPT); + +} diff --git a/kernel_old/ata_pio.h b/kernel_old/ata_pio.h new file mode 100644 index 0000000..bbae4ad --- /dev/null +++ b/kernel_old/ata_pio.h @@ -0,0 +1,59 @@ +#ifndef __ATA_PIO_H +#define __ATA_PIO_H + +#include "os.h" + +#define ATA_MASTER_DRIVE 0xA0 +#define ATA_SLAVE_DRIVE 0xB0 + +#define ATA_ERR_AMNF (1<<0) +#define ATA_ERR_TKZNF (1<<1) +#define ATA_ERR_ABRT (1<<2) +#define ATA_ERR_MCR (1<<3) +#define ATA_ERR_IDNF (1<<4) +#define ATA_ERR_MC (1<<5) +#define ATA_ERR_UNC (1<<6) +#define ATA_ERR_BBK (1<<7) + +#define ATA_DRIVE_REG(lba,drv) (0x80|((drv&0x01)<<4)|((lba)&0x0F)) + +#define ATA_STS_ERR (1<<0) +#define ATA_STS_IDX (1<<1) +#define ATA_STS_CORR (1<<2) +#define ATA_STS_DRQ (1<<3) +#define ATA_STS_SRV (1<<4) +#define ATA_STS_FD (1<<5) +#define ATA_STS_RDY (1<<6) +#define ATA_STS_BSY (1<<7) + +#define ATA_DCR_NIEN (1<<1) +#define ATA_DCR_SRST (1<<2) +#define ATA_DCR_HOB (1<<7) + +#define ATA_PRIMARY_IO_BASE 0x1F0 +#define ATA_PRIMARY_CTRL_BASE 0x3F6 + +#define ATA_SECONDARY_IO_BASE 0x170 +#define ATA_SECONDARY_CTRL_BASE 0x376 + +// Port map + +#define ATA_DATA 0 +#define ATA_ERR 1 +#define ATA_FEAT 1 +#define ATA_SEC 2 +#define ATA_LBALO 3 +#define ATA_LBAMID 4 +#define ATA_LBAHI 5 +#define ATA_DRV 6 +#define ATA_STATUS 7 +#define ATA_COMMAND 7 + +// Commands + +#define ATA_CMD_IDENTIFY 0xEC + +void ata_init(); +void ata_init_drive(u8 drv,u8 slavebit); + +#endif diff --git a/kernel_old/exceptions.c b/kernel_old/exceptions.c new file mode 100644 index 0000000..2ad21c9 --- /dev/null +++ b/kernel_old/exceptions.c @@ -0,0 +1,138 @@ +#include "exceptions.h" +#include "vga_terminal.h" +#include "termlib.h" +#include "idt.h" +#include "pit.h" +#include "x86utils.h" + +/* We need to implement those excpetions: + * 0 Division by zero + * 3 Breakpoint + * 6 Invalid opcode + * 7 Device not available + * 8 Double Fault + * 10 Invalid TSS + * 11 Segment not present + * 12 Stack segment fault + * 13 General protection fault + * 14 Page fault + * + */ + +static void hang() +{ + x86_print_regs(); + while(1){__asm("hlt");} +} + +extern void command_interpreter(); +extern void _load_legacy_stack(); + +void _enter_rescue_mode() +{ + _load_legacy_stack(); + sleep(500); + command_interpreter(); +} + +void enter_rescue_mode(int skip_check) +{ + if(!skip_check) + { + chg_color(VGA_COLOR_LIGHT_CYAN); + kprintf("Rollback to terminal? (y - yes, n - no): "); + u8 ans = kgetc(); + if(ans == 'y' || skip_check) + { + kputc('\n'); + chg_color(VGA_COLOR_MAGENTA); + _enter_rescue_mode(); + } + chg_color(VGA_COLOR_MAGENTA); + } + else + { + cls(); + kprintf("Terminal reloaded\n"); + _enter_rescue_mode(); + } +} + +void exception0(int idx) +{ + kprintf("[Exception] Division by zero\n"); + hang(); +} + +void exception3(int idx) +{ + kprintf("[Exception] Debug\n"); + hang(); +} + +void exception6(int idx) +{ + kprintf("[Exception] Invalid opcode\n"); + hang(); +} + +void exception7(int idx) +{ + kprintf("[Exception] Device not available\n"); + hang(); +} + +void exception8(int idx) +{ + kprintf("[Exception] Double fault\n"); + hang(); +} + +void exception10(int idx) +{ + kprintf("[Exception] Invalid TSS\n"); + hang(); +} + +void exception11(int idx) +{ + kprintf("[Exception] Segment not present\n"); + hang(); +} + +void exception12(int idx) +{ + kprintf("[Exception] Stack segment fault\n"); + hang(); +} + +void exception13(int idx) +{ + kprintf("[Exception] General protection fault\n"); + hang(); +} + +void exception14(int idx) +{ + kprintf("[Exception] Page fault\n"); + x86_print_regs(); + //Do we want to rollback in command interpreter + + enter_rescue_mode(0); + while(1){__asm("hlt");} +} + +void install_exceptions() +{ + idt_setup(_int0_handler,exception0,0,IDT_TYPE_TRAP); + idt_setup(_int3_handler,exception3,3,IDT_TYPE_TRAP); + idt_setup(_int6_handler,exception6,6,IDT_TYPE_TRAP); + idt_setup(_int7_handler,exception7,7,IDT_TYPE_TRAP); + idt_setup(_int8_handler,exception8,8,IDT_TYPE_TRAP); + //idt_setup(_int9_handler,exception9,9,IDT_TYPE_TRAP); + idt_setup(_int10_handler,exception10,10,IDT_TYPE_TRAP); + idt_setup(_int11_handler,exception11,11,IDT_TYPE_TRAP); + idt_setup(_int12_handler,exception12,12,IDT_TYPE_TRAP); + idt_setup(_int13_handler,exception13,13,IDT_TYPE_TRAP); + idt_setup(_int14_handler,exception14,14,IDT_TYPE_TRAP); +} diff --git a/kernel_old/exceptions.h b/kernel_old/exceptions.h new file mode 100644 index 0000000..42f6e49 --- /dev/null +++ b/kernel_old/exceptions.h @@ -0,0 +1,9 @@ +#ifndef __EXCEPTIONS_H +#define __EXCEPTIONS_H + +#include "os.h" + +void enter_rescue_mode(); +void install_exceptions(); + +#endif diff --git a/kernel_old/gdt.c b/kernel_old/gdt.c new file mode 100644 index 0000000..41c73ac --- /dev/null +++ b/kernel_old/gdt.c @@ -0,0 +1,39 @@ +#include "gdt.h" + +static u64 gdt_table[GDT_MAX]; + +u64 gdt_create(u32 base,u32 limit,u32 type) +{ + u64 desc; + u8 access_byte; + u8 flags; + + access_byte = GDT_AB_PR|GDT_AB_S|GDT_AB_RW; + if(type == GDT_CODE) + { + access_byte |= GDT_AB_EX; + } + + flags = GDT_FLAGS_GR|GDT_FLAGS_SZ; + + desc = 0; + desc |= (u64)(limit & 0xFFFF) << 0; + desc |= (u64)(base & 0xFFFF) << 16; + desc |= (u64)((base>>16) & 0xFF) << 32; + desc |= (u64)(access_byte & 0xFF) << 40; + desc |= (u64)((limit>>16) & 0x0F) << 48; + desc |= (u64)(flags & 0x0F) << 52; + desc |= (u64)((base>>24) & 0xFF) << 56; + + return desc; +} + +void gdt_install() +{ + // Protected Mode Flat Model + gdt_table[GDT_NULL] = gdt_create(0,0,0); + gdt_table[GDT_CODE] = gdt_create(0,0x000FFFFF,GDT_CODE); + gdt_table[GDT_DATA] = gdt_create(0,0x000FFFFF,GDT_DATA); + + _gdt_install(gdt_table,sizeof(gdt_table)-1); +} diff --git a/kernel_old/gdt.h b/kernel_old/gdt.h new file mode 100644 index 0000000..f614906 --- /dev/null +++ b/kernel_old/gdt.h @@ -0,0 +1,29 @@ +#ifndef __GDT_H +#define __GDT_H + +#include "os.h" + +#define GDT_AB_PR (1<<7) +#define GDT_AB_PRIVL (1<<5) +#define GDT_AB_S (1<<4) +#define GDT_AB_EX (1<<3) +#define GDT_AB_DC (1<<2) +#define GDT_AB_RW (1<<1) +#define GDB_AB_AC (1<<0) + +#define GDT_FLAGS_GR (1<<3) +#define GDT_FLAGS_SZ (1<<2) + +enum { + GDT_NULL = 0, + GDT_CODE, + GDT_DATA, + GDT_MAX, +}; + +u64 gdt_create(u32 base,u32 limit,u32 type); +void gdt_install(); + +extern void _gdt_install(void* gdt,int size); + +#endif diff --git a/kernel_old/idt.c b/kernel_old/idt.c new file mode 100644 index 0000000..67c5b71 --- /dev/null +++ b/kernel_old/idt.c @@ -0,0 +1,72 @@ +#include "idt.h" +#include "termlib.h" + +static u64 idt_table[256]; //256 entries lol +static idt_handler idt_handlers[256]; + +u64 idt_create(void* handler,int type) +{ + u64 desc; + u32 addr; + + addr = (u32)handler; + + desc = 0; + desc |= (u64)(addr&0xFFFF) << 0; + desc |= (u64)(OS_CODE_SELECTOR&0xFFFF) << 16; + desc |= (u64)(type&0x0F) << 40; + desc |= (u64)(1) << 47; + desc |= (u64)(addr>>16) << 48; + + return desc; +} + +void idt_setup(void* int_handler,idt_handler handler,int idx,int type) +{ + idt_table[idx] = idt_create(int_handler,type); + idt_handlers[idx] = handler; +} + +static void* idt_get_addr(int i) +{ + return (void*)(((u32)((idt_table[i]>>48)<<16)|(u32)(idt_table[i]&0xFFFF))); +} + +int idt_irq_by_addr(void* addr) +{ + int i; + + for(i = 0; i < 256; i++) + if(idt_get_addr(i) == addr) return i; + + return -1; +} + +void idt_handler_entry(void* addr) +{ + int idx; + + idx = idt_irq_by_addr(addr); + if(idx == -1) + { + kprintf("No IDT entry some INT!\n"); + return; + } + + //Call handler + idt_handlers[idx](idx); +} + +void idt_install() +{ + int i; + + for(i = 0; i < 256; i++) idt_table[i] = 0; + + _idt_install(idt_table,sizeof(idt_table)-1); +} + +void idt_enable_interrupts() +{ + __asm("sti"); +} diff --git a/kernel_old/idt.h b/kernel_old/idt.h new file mode 100644 index 0000000..abfce5f --- /dev/null +++ b/kernel_old/idt.h @@ -0,0 +1,60 @@ +#ifndef __IDT_H +#define __IDT_H + +#include "os.h" + +typedef enum { + IDT_TYPE_TASK = 5, + IDT_TYPE_16_INTERRUPT = 6, + IDT_TYPE_16_TRAP = 7, + IDT_TYPE_INTERRUPT = 14, + IDT_TYPE_TRAP = 15, +} idt_type; + +typedef void (*idt_handler)(int irq); + +u64 idt_create(void* handler,int type); +void idt_setup(void* int_handler,idt_handler handler,int idx,int type); +int idt_irq_by_addr(void* addr); + +void idt_handler_entry(void* addr); + +void idt_install(); +extern void _idt_install(void* idt,int limit); + +void idt_enable_interrupts(); + +extern void _int0_handler(); +extern void _int1_handler(); +extern void _int2_handler(); +extern void _int3_handler(); +extern void _int4_handler(); +extern void _int5_handler(); +extern void _int6_handler(); +extern void _int7_handler(); +extern void _int8_handler(); +extern void _int9_handler(); +extern void _int10_handler(); +extern void _int11_handler(); +extern void _int12_handler(); +extern void _int13_handler(); +extern void _int14_handler(); +extern void _int15_handler(); +extern void _int16_handler(); +extern void _int17_handler(); +extern void _int18_handler(); +extern void _int19_handler(); +extern void _int20_handler(); +extern void _int21_handler(); +extern void _int22_handler(); +extern void _int23_handler(); +extern void _int24_handler(); +extern void _int25_handler(); +extern void _int26_handler(); +extern void _int27_handler(); +extern void _int28_handler(); +extern void _int29_handler(); +extern void _int30_handler(); +extern void _int31_handler(); + +#endif diff --git a/kernel_old/io.h b/kernel_old/io.h new file mode 100644 index 0000000..a412717 --- /dev/null +++ b/kernel_old/io.h @@ -0,0 +1,21 @@ +#ifndef __IO_H +#define __IO_H + +#include "os.h" + +extern u8 inb(u16 port); +extern void outb(u16 port,u8 data); + +extern u16 inw(u16 port); +extern void outw(u16 port,u16 data); + +extern u32 inl(u16 port); +extern void outl(u16 port,u32 data); + +extern void _insw(u16 port,u8* buffer,u32 count); +extern void _outsw(u16 port,u8* buffer,u32 count); + +extern void _insw256(u16 port,u8* buffer); +extern void _outsw256(u16 port,u8* buffer); + +#endif diff --git a/kernel_old/keyboard.c b/kernel_old/keyboard.c new file mode 100644 index 0000000..f870313 --- /dev/null +++ b/kernel_old/keyboard.c @@ -0,0 +1,151 @@ +#include "keyboard.h" +#include "exceptions.h" +#include "idt.h" +#include "pic.h" +#include "pit.h" +#include "termlib.h" +#include "vga_terminal.h" + +static u8 s_i8keycode = 0; +static u8 s_i8keycode2 = 0; +static u32 s_ctrlkeys = 0; + +static u8 s_keymap[128] = { + 0, 0x1B, + '1','2', + '3','4','5','6', + '7','8','9','0', + '-','=', + 0x08, + 0x09, + 'Q','W','E','R', + 'T','Y','U','I', + 'O','P','[',']', + 0x0A,0, + 'A','S','D','F', + 'G','H','J','K', + 'L',';','\'','`', + 0, + '\\', + 'Z','X','C','V', + 'B','N','M',',', + '.','/', + 0, + '*', + 0, + ' ', + 0,0,0,0, + 0,0,0,0, + 0,0,0,0, + 0, +}; + +static char* shift_numbers = "!@#$%^&*()_+"; + +static void check_keys() +{ + if((s_ctrlkeys & (KEY_LSHIFT|KEY_LALT) == (KEY_LSHIFT|KEY_LALT)) + && s_i8keycode2 == 0x2C) + { + //If we're entering rescue mode, we must send EOI! + pic_send_eoi(1); + enter_rescue_mode(1); + } +} + +static void _keyboard_ctrlkeys_update(u8 keychar,u8 event) +{ + u8 ctrlkey; + + ctrlkey = 0; + if(keychar == KEY_RSHIFT) ctrlkey = CTRLKEYS_RSHIFT; + else if(keychar == KEY_LSHIFT) ctrlkey = CTRLKEYS_LSHIFT; + else if(keychar == KEY_LALT) ctrlkey = CTRLKEYS_LALT; + + if(event) s_ctrlkeys &= ~ctrlkey; //Released + else s_ctrlkeys |= ctrlkey; //Pressed +} + +void keyboard_interrupt(int idx) +{ + u8 status; + u8 keycode,keychar; + + status = inb(0x64); + if(status & 1) + { + keycode = inb(0x60); + keychar = keycode & ~0x80; + s_i8keycode2 = keychar; + if(keychar == KEY_RSHIFT + || keychar == KEY_LSHIFT + || keychar == KEY_LALT) + { + _keyboard_ctrlkeys_update(keychar,keycode>>7); + s_i8keycode = 0; + } + else if(!(keycode & 0x80)) + { + s_i8keycode = keychar; + //kprintf("%c",keyboard_ascii()); + } + } + check_keys(); + + pic_send_eoi(1); +} + +u8 keyboard_scan_code() +{ + return s_i8keycode; +} + +u8 keyboard_ascii() +{ + u8 ascii; + + if(s_i8keycode >= sizeof(s_keymap)) return 0; + ascii = s_keymap[s_i8keycode]; + + if(s_ctrlkeys & (CTRLKEYS_LSHIFT|CTRLKEYS_RSHIFT)) + { + if((s_i8keycode >= 0x02) && (s_i8keycode <= 0x0D)) + { + if(s_i8keycode >= 2) + ascii = shift_numbers[s_i8keycode-2]; + } + if(ascii == '[') ascii = '{'; + else if(ascii == ']') ascii = '}'; + else if(ascii == '\\') ascii = '|'; + else if(ascii == ';') ascii = ':'; + else if(ascii == '\'') ascii = '"'; + else if(ascii == ',') ascii = '<'; + else if(ascii == '.') ascii = '>'; + else if(ascii == '/') ascii = '?'; + else if(ascii == '`') ascii = '~'; + } + else if(ascii >= 0x41 && ascii <= 0x5A) ascii += 0x20; + + return ascii; +} + +void keyboard_reset_irq1_vars() +{ + s_i8keycode = 0; +} + +void keyboard_enable() +{ + pic_set_mask(1,1); +} + +void keyboard_disable() +{ + pic_set_mask(1,0); +} + +void keyboard_install() +{ + pic_set_mask(1,1); + idt_setup(_int9_handler,keyboard_interrupt,33,IDT_TYPE_INTERRUPT); +} diff --git a/kernel_old/keyboard.h b/kernel_old/keyboard.h new file mode 100644 index 0000000..df46746 --- /dev/null +++ b/kernel_old/keyboard.h @@ -0,0 +1,50 @@ +#ifndef __KEYBOARD_H +#define __KEYBAORD_H + +#include "os.h" + +#define CTRLKEYS_LSHIFT (1<<0) +#define CTRLKEYS_RSHIFT (1<<1) +#define CTRLKEYS_LALT (1<<2) + +typedef enum { + //Controls keys + KEY_LSHIFT = 0x2A, + KEY_RSHIFT = 0x36, + KEY_LALT = 0x38, + + //Numpad + KEY_NP_7 = 0x47, + KEY_NP_8, + KEY_NP_9, + KEY_NP_MINUS, + KEY_NP_4, + KEY_NP_5, + KEY_NP_6, + KEY_NP_PLUS, + KEY_NP_DOT, + //Functions + KEY_F1 = 0x3B, + KEY_F2, + KEY_F3, + KEY_F4, + KEY_F5, + KEY_F6, + KEY_F7, + KEY_F8, + KEY_F9, + KEY_F10, + KEY_F11 = 0x57, + KEY_F12 +} kb_keys_t; + +void keyboard_install(); +u8 keyboard_scan_code(); +u8 keyboard_ascii(); + +void keyboard_enable(); +void keyboard_disable(); + +void keyboard_reset_irq1_vars(); + +#endif diff --git a/kernel_old/kmain.c b/kernel_old/kmain.c new file mode 100644 index 0000000..fbf4dd9 --- /dev/null +++ b/kernel_old/kmain.c @@ -0,0 +1,142 @@ +#include "os.h" +#include "memory.h" +#include "vga_terminal.h" +#include "gdt.h" +#include "idt.h" +#include "pic.h" +#include "pit.h" +#include "pci.h" +#include "ahci.h" +#include "exceptions.h" +#include "paging.h" +#include "keyboard.h" +#include "x86utils.h" +#include "stdlib.h" +#include "string.h" + +static char* xnums = "0123456789ABCDEF"; + +void command_interpreter() +{ + char command[64]; + + while(1) + { + kputc('>'); + kgets(command,sizeof(command)); + if(!kstrncmp(command,"ram_map")) + { + ram_map_t* ram = ram_get_map(); + kprintf("RAM size = %u\nRAM pools %u\n", + ram->ram_total_size,ram->ram_pool_count); + for(u32 i = 0; i < ram->ram_pool_count; i++) + { + kprintf("\t%p\t%p\n",ram->ram_pools[i].start, + ram->ram_pools[i].end); + } + } + else if(!kstrncmp(command,"page_map")) + { + u32 virt,phys,size; + ksscanf(command,"page_map %p %p %u",&virt,&phys,&size); + page_map(virt,phys,size,PAGE_TABLE_READWRITE); + } + else if(!kstrncmp(command,"page_unmap")) + { + u32 virt,size; + ksscanf(command,"page_unmap %p %u",&virt,&size); + page_unmap(virt,size); + } + else if(!kstrncmp(command,"page_v2p")) + { + u32 virt; + ksscanf(command,"page_v2p %p",&virt); + kprintf("VIRT %p -> PHYS %p\n",virt,page_v2p(virt)); + } + else if(!kstrncmp(command,"dump")) + { + u32 lines,virt; + ksscanf(command,"dump %u %p",&lines,&virt); + for(u32 i = 0; i < lines; i++) + { + kprintf("%p: ",virt); + for(u32 j = 0; j < 16; j++) + { + u8 byte; + byte = *(u8*)(virt+j); + kprintf("%c%c ",xnums[byte>>8],xnums[byte&0x0F]); + } + kprintf("\n"); + virt += 16; + } + } + else if(!kstrncmp(command,"pci_dump")) + { + pci_dump(); + } + else if(!kstrncmp(command,"hang")) + { + while(1){__asm("nop");} + } + else if(!kstrncmp(command,"sata_identify")) + { + sata_identify(); + } + } +} + +void kernel_main(multiboot_hdr_t* mbt,int magic) +{ + //Unmap first 16 MB + //Before we unmap first 16 MB, we need to know all about MBT + mbt_mmap_init(mbt); + page_unmap(0,1024*1024*16); + //Map video buffer + vga_terminal_init(); + //Fix MBT address + + cls(); + chg_color(VGA_COLOR_MAGENTA); + vga_terminal_init(); + + kprintf("GRUB loaded Lenochka!\n"); + kprintf("MBT %p magic %x\n",mbt,magic); + kprintf("%u KB RAM\n",ram_get_size()>>10); + + chg_color(VGA_COLOR_WHITE); + kprintf("\nOS_VIDEO_BUFFER %x\n\n",OS_VIDEO_BUFFER); + chg_color(VGA_COLOR_MAGENTA); + + kprintf("Installing GDT\n"); + + gdt_install(); + + for(int i = 0; i < 10; i++) kprintf("%d ",i); + kprintf("\nGDT Installed\n"); + + kprintf("Init PIC\n"); + pic_init(0x20,0x28); + + kprintf("Installing IDT\n"); + idt_install(); + + for(int i = 0; i < 10; i++) kprintf("%d ",i); + kprintf("\nIDT Installed\n"); + + install_exceptions(); + kprintf("Exceptions installed\n"); + + pit_init(); + keyboard_install(); + idt_enable_interrupts(); //IRQs and exceptions + + pci_detect_hardware(); + pci_dump(); + ahci_init(); + + kprintf("\n\n"); + + command_interpreter(); + + while(1){__asm("hlt");} +} diff --git a/kernel_old/memory.c b/kernel_old/memory.c new file mode 100644 index 0000000..8ce0e9d --- /dev/null +++ b/kernel_old/memory.c @@ -0,0 +1,36 @@ +#include "memory.h" + +static ram_map_t s_RAMmap; + +void mbt_mmap_init(multiboot_hdr_t* mbt) +{ + s_RAMmap.ram_total_size = 0; + s_RAMmap.ram_pool_count = 0; + multiboot_mmap_t* mmap = (multiboot_mmap_t*)mbt->mmap_addr; + while((u32)mmap < (u32)mbt->mmap_addr + mbt->mmap_length) + { + if(mmap->type == 1) + { + ram_pool_t* pool; + if(s_RAMmap.ram_pool_count == MAX_RAM_POOLS) + break; + pool = &s_RAMmap.ram_pools[s_RAMmap.ram_pool_count++]; + + pool->start = (u32)mmap->base_addr; + pool->end = pool->start + (u32)mmap->length; + + s_RAMmap.ram_total_size += mmap->length; + } + mmap = (multiboot_mmap_t*)((u32)mmap + mmap->size + 4); + } +} + +ram_map_t* ram_get_map() +{ + return &s_RAMmap; +} + +u32 ram_get_size() +{ + return s_RAMmap.ram_total_size; +} diff --git a/kernel_old/memory.h b/kernel_old/memory.h new file mode 100644 index 0000000..96a67a2 --- /dev/null +++ b/kernel_old/memory.h @@ -0,0 +1,25 @@ +#ifndef __MEMORY_H +#define __MEMORY_H + +#include "os.h" +#include "multiboot.h" + +#define MAX_RAM_POOLS 32 + +typedef struct { + u32 __phys start; + u32 __phys end; +} ram_pool_t; + +typedef struct { + u32 ram_total_size; + u32 ram_pool_count; + ram_pool_t ram_pools[MAX_RAM_POOLS]; +} ram_map_t; + +//It must be called before first 1 MB got unpaged +void mbt_mmap_init(multiboot_hdr_t* mbt); +ram_map_t* ram_get_map(); +u32 ram_get_size(); + +#endif diff --git a/kernel_old/multiboot.asm b/kernel_old/multiboot.asm new file mode 100644 index 0000000..b78cc46 --- /dev/null +++ b/kernel_old/multiboot.asm @@ -0,0 +1,101 @@ +MBALIGN equ 1 << 0 +MEMINFO equ 1 << 1 +FLAGS equ MBALIGN|MEMINFO +MAGIC equ 0x1BADB002 +CHECKSUM equ -(MAGIC+FLAGS) + +section .multiboot +align 4 + dd MAGIC + dd FLAGS + dd CHECKSUM + +section .bss +global page_directories +global page_tables +global legacy_esp + +align 4096 +page_directories resb 4096 +page_tables resb 4194304 + +align 16 +stack_bottom: +resb 32768 ; 32 KiB +stack_top: +legacy_esp resd 1 + +section .text +global _start +_start: + mov esp,(stack_bottom - 0xC0000000 + 0x7FFC) + + push eax + push ebx + + cld + ; Our kernel will be mapped for 16M, or 4 dirs + mov edi,(page_directories - 0xC0000000 + 0xC00) + xor ecx,ecx +_dir_set: + xor edx,edx + mov eax,4096 + mul ecx + add eax,(page_tables - 0xC0000000 + 0xC0000) + or eax,3 ; Present + RW + stosd + inc ecx + cmp ecx,4 + jne _dir_set + + ; Setup tables - map from 0 to 16M + mov edi,(page_tables - 0xC0000000 + 0xC0000) + xor ebx,ebx ; Physical address + + mov ecx,4096 +_table_set: + mov eax,ebx + add eax,3 + stosd + + add ebx,4096 + loop _table_set + + ; Identity map also first 4 MB + + mov esi,(page_directories - 0xC0000000 + 0xC00) + mov edi,(page_directories - 0xC0000000) + mov cx,4 +_copy_map: + lodsd + stosd + loop _copy_map + + mov eax,(page_directories - 0xC0000000 + 0xC00) + mov ebx,(page_directories - 0xC0000000) + mov ecx,(page_tables - 0xC0000000 + 0xC0000) + + ; Enable paging + mov eax,(page_directories - 0xC0000000) + mov cr3,eax + + mov eax,cr0 + or eax,0x80010000 + mov cr0,eax + + mov eax,_paging_enter + jmp eax + +_paging_enter: + extern kernel_main + + add esp,0xC0000000 + mov dword [legacy_esp],esp + + ;push eax + ;push ebx + call kernel_main + add esp,8 + cli + hlt +.end: diff --git a/kernel_old/multiboot.h b/kernel_old/multiboot.h new file mode 100644 index 0000000..de4e53d --- /dev/null +++ b/kernel_old/multiboot.h @@ -0,0 +1,58 @@ +#ifndef __MULTIBOOT_H +#define __MULTIBOOT_H + +#include "os.h" + +typedef struct { + u32 flags; + + u32 mem_lower; + u32 mem_upper; + + u32 boot_device; + + u32 cmd_line; + + u32 mods_count; + u32 mods_addr; + + u32 syms[4]; + + u32 mmap_length; + u32 mmap_addr; + + u32 drives_length; + u32 drives_addr; + + u32 config_table; + + u32 boot_loader_name; + + u32 apm_table; + + u32 vbe_control_info; + u32 vbe_mode_info; + u32 vbe_mode; + u32 vbe_interface_seg; + u32 vbe_interface_off; + u32 vbe_interface_len; + + u32 framebuffer_addr; + u32 framebuffer_pitch; + u32 framebuffer_width; + u32 framebuffer_height; + u8 framebuffer_bpp; + u8 color_info[5]; + +} __attribute__((packed)) multiboot_hdr_t; + +#define MBT_MMAP_TYPE_RAM 1 + +typedef struct { + u32 size; + u64 base_addr; + u64 length; + u32 type; +} __packed multiboot_mmap_t; + +#endif diff --git a/kernel_old/os.h b/kernel_old/os.h new file mode 100644 index 0000000..446b444 --- /dev/null +++ b/kernel_old/os.h @@ -0,0 +1,36 @@ +#ifndef __OS_H +#define __OS_H + +#define OS_NULL_SELECTOR 0x00 +#define OS_CODE_SELECTOR 0x08 +#define OS_DATA_SELECTOR 0x10 + +#define OS_PHYS_MAPPING 0x00100000 +#define OS_VIRT_MAPPING 0xC0000000 +#define OS_PM86_MEM_SIZE_4K (1024*1024) +#define OS_PHYS_ADDR(virt) (virt-OS_VIRT_MAPPING) + +#define OS_VIDEO_BUFFER 0xC10B8000 +#define OS_PROG_MAPPING 0x01000000 + +#define __packed __attribute__((packed)) +#define __align(N) __attribute__((aligned(N))) + +#define __phys +#define __virt + +#define NULL (void*)0 + +typedef unsigned char u8; +typedef unsigned short u16; +typedef unsigned long u32; +typedef unsigned long long u64; + +typedef char i8; +typedef short i16; +typedef long i32; +typedef long long i64; + +typedef unsigned long size_t; + +#endif diff --git a/kernel_old/paging.c b/kernel_old/paging.c new file mode 100644 index 0000000..08fb7ad --- /dev/null +++ b/kernel_old/paging.c @@ -0,0 +1,93 @@ +#include "paging.h" +#include "termlib.h" + +// Allocate some space for page directories & tables +//static u32 page_directories[PAGE_DIR_NUM] __align(4096); +//static u32 page_tables[PAGE_TABLE_NUM] __align(4096); + +void page_map(u32 __virt virt,u32 __phys phys,u32 size,u32 flags) +{ + u32 num_dirs,num_pages; + u32 dir_index,table_index; + u32 i; + + num_pages = (size>>12) + ((size&0xFFF) ? 1 : 0); + num_dirs = (num_pages>>10) + ((num_pages&0x3FFF) ? 1 : 0); + + table_index = virt>>12; + dir_index = table_index>>10; + + //Make directories present + for(i = 0; i < num_dirs; i++) + { + if(!(page_directories[dir_index+i] & PAGE_DIR_PRESENT)) + { + page_directories[dir_index+i] = PAGE_DIR_ENTRY( + OS_PHYS_ADDR( (u32)(&page_tables[(dir_index+i)<<10]) ), + PAGE_DIR_PRESENT + | PAGE_DIR_READWRITE + ); + } + } + + //Make tables present + for(i = 0; i < num_pages; i++) + { + page_tables[table_index+i] = PAGE_TABLE_ENTRY( + (u32)(phys+i*4096), + flags|PAGE_TABLE_PRESENT + ); + } +} + +extern void x86_reload_cr3(); + +void page_unmap(u32 __virt virt,u32 size) +{ + u32 num_dirs,num_pages; + u32 dir_index,table_index; + u32 i,reload_cr3; + + num_pages = (size>>12) + ((size&0xFFF) ? 1 : 0); + num_dirs = (num_pages>>10) + ((num_pages&0x3FFF) ? 1 : 0); + + table_index = virt>>12; + dir_index = table_index>>10; + + for(i = 0; i < num_pages; i++) + page_tables[table_index+i] = 0; + + //Check directories + reload_cr3 = 0; + for(i = 0; i < num_dirs; i++) + { + u32 j; + + for(j = 0; j < 1024; j++) + { + if(page_tables[((dir_index+i)<<10) + j] & PAGE_TABLE_PRESENT) + break; + } + + //Directory empty + if(j == 1024) + { + page_directories[dir_index+i] = 0; + reload_cr3 = 1; + } + } + if(reload_cr3) x86_reload_cr3(); +} + +__phys u32 page_v2p(u32 __virt virt) +{ + u32 index,dir_entry; + u32* table; + + index = virt>>12; + dir_entry = page_directories[index>>10]; + if(!(dir_entry & PAGE_DIR_PRESENT)) return 0; + table = (u32*)((dir_entry&0xFFFFF000) + OS_VIRT_MAPPING); + + return table[index&0x3FF] & 0xFFFFF000; +} diff --git a/kernel_old/paging.h b/kernel_old/paging.h new file mode 100644 index 0000000..691b9c5 --- /dev/null +++ b/kernel_old/paging.h @@ -0,0 +1,37 @@ +#ifndef __PAGING_H +#define __PAGING_H + +#include "os.h" + +#define PAGE_DIR_PRESENT (1<<0) +#define PAGE_DIR_READWRITE (1<<1) +#define PAGE_DIR_USERMODE (1<<2) +#define PAGE_DIR_WRITECACHE (1<<3) +#define PAGE_DIR_NOCACHE (1<<4) +#define PAGE_DIR_ACCESSED (1<<5) +#define PAGE_DIR_PAGESIZE (1<<7) + +#define PAGE_DIR_ENTRY(phys,flags) ((phys&0xFFFFF000)|flags) + +#define PAGE_TABLE_PRESENT (1<<0) +#define PAGE_TABLE_READWRITE (1<<1) +#define PAGE_TABLE_USERMODE (1<<2) +#define PAGE_TABLE_WRITECACHE (1<<3) +#define PAGE_TABLE_CACHE (1<<4) +#define PAGE_TABLE_GLOBAL (1<<8) + +#define PAGE_TABLE_ENTRY(phys,flags) ((phys&0xFFFFF000)|flags) + +#define PAGE_DIR_NUM 1024 +#define PAGE_TABLE_NUM OS_PM86_MEM_SIZE_4K + +//Map physical address to virtual +void page_map(u32 __virt virt,u32 __phys phys,u32 size,u32 flags); + +void page_unmap(u32 __virt virt,u32 size); +__phys u32 page_v2p(u32 __virt virt); + +extern u32 page_directories[PAGE_DIR_NUM]; +extern u32 page_tables[PAGE_TABLE_NUM]; + +#endif diff --git a/kernel_old/pci.c b/kernel_old/pci.c new file mode 100644 index 0000000..242474d --- /dev/null +++ b/kernel_old/pci.c @@ -0,0 +1,251 @@ +#include "pci.h" +#include "vga_terminal.h" +#include "stdlib.h" +#include "io.h" + +typedef struct { + u32 device_count; + pci_device_t devices[MAX_PCI_DEVICES]; +} pci_hardware_t; + +static pci_hardware_t s_pci; + +struct pci_class_s { + int len; + const char* name; +}; + +static struct pci_class_s s_classes[] = { + {2,"Unclassified"}, + {9,"Mass Storage Controller"}, + {9,"Network Controller"}, + {3,"Display Controller"}, + {4,"Multimedia Controller"}, + {2,"Memory controller"}, + {11,"Bridge Device"}, + {6,"Simple Communication Controller"}, + {7,"Base System Peripheral"}, + {5,"Input Device Controller"}, + {0,"Docking Station"}, + {0,"Processor"}, + {10,"Serial Bus Controller"}, + {0,"Wireless Controller"}, + {0,"Intelligent Controller"}, + {0,"Satellite Communication Controller"}, + {0,"Encryption Controller"}, + {0,"Signal Processing Controller"}, + {0,"Processing Accelerator"}, + {0,"Non-Essential Instrumentation"} +}; + +static char* s_subclasses[] = { + "Non-VGA-Compatible devices", + "VGA-Compatible Device", + + "SCSI Bus Controller", + "IDE Controller", + "Floppy Disk Controller", + "IPI Bus Controller", + "RAID Controller", + "ATA Controller", + "Serial ATA", + "Serial Attached SCSI", + "Non-Volatile Memory Controller", + + "Ethernet Controller", + "Token Ring Controller", + "FDDI Controller", + "ATM Controller", + "ISDN Controller", + "WorldFip Controller", + "PICMG 2.14 Multi Computing", + "Infiniband Controller", + "Fabric Controller", + + "VGA Compatible Controller", + "XGA Controller", + "3D Controller (Not VGA-Compatible)", + + "Multimedia Video Controller", + "Multimedia Audio Controller", + "Computer Telephony Device", + "Audio Device", + + "RAM Controller", + "Flash Controller", + + "Host Bridge", + "ISA Bridge", + "EISA Bridge", + "MCA Bridge", + "PCI-to-PCI Bridge", + "PCMCIA Bridge", + "NuBus Bridge", + "CardBus Bridge", + "RACEway Bridge", + "PCI-to-PCI Bridge", + "InfiniBand-to-PCI Host Bridge", + + "Serial Controller", + "Parallel Controller", + "Multiport Serial Controller", + "Modem", + "IEEE 488.1/2 (GPIB) Controller", + "Smart Card", + + "PIC", + "DMA Controller", + "Timer", + "RTC Controller", + "PCI Hot-Plug Controller", + "SD Host controller", + "IOMMU", + + "Keyboard Controller", + "Digitizer Pen", + "Mouse Controller", + "Scanner Controller", + "Gameport Controller", + + "FireWire (IEEE 1394) Controller", + "ACCESS Bus", + "SSA", + "USB Controller", + "Fibre Channel", + "SMBus", + "InfiniBand", + "IPMI Interface", + "SERCOS Interface (IEC 61491)", + "CANbus" + +}; + +u32 pci_read_config_word(u32 bus,u32 device,u32 function,u32 offset) +{ + u32 address; + + bus &= 0xFF; // 8 bit + device &= 0x1F; // 5 bit + function &= 0x07; // 3 bit + offset &= 0xFC; // 6 bit + + address = 0x80000000UL|(bus<<16)|(device<<11)|(function<<8)|(offset); + + outl(PCI_CONFIG_ADDRESS,address); + return inl(PCI_CONFIG_DATA); +} + +u32 pci_read_config_word_dev(pci_device_t dev,u32 offset) +{ + u32 address; + + offset &= 0xFC; // 6 bit + + address = 0x80000000|((dev&0xFFFF0000)>>8)|(offset); + + outl(PCI_CONFIG_ADDRESS,address); + return inl(PCI_CONFIG_DATA); +} + +const char* pci_get_class(u32 class) +{ + if(class >= sizeof(s_classes)/sizeof(struct pci_class_s)) + return "Unknown"; + return s_classes[class].name; +} + +const char* pci_get_subclass(u32 class,u32 subclass) +{ + u32 i,index; + + if(class >= sizeof(s_classes)/sizeof(struct pci_class_s)) + return "Unknown"; + if(subclass >= sizeof(s_subclasses)/sizeof(const char*)) + return "Unknown"; + else if(subclass == 0x80) return "Other"; + + index = 0; + for(i = 0; i < class; i++) + index += s_classes[i].len; + if(i == class && subclass >= s_classes[i].len) return "Unknown"; + + return s_subclasses[index+subclass]; +} + +void pci_dump() +{ + for(u32 i = 0; i < s_pci.device_count; i++) + { + u32 class,subclass; + + class = (s_pci.devices[i]>>8)&0xFF; + subclass = s_pci.devices[i] & 0xFF; + kprintf("%x\t%s\t%s\n", + s_pci.devices[i], + pci_get_class(class), + pci_get_subclass(class,subclass)); + } +} + +static void pci_add_device(u32 bus,u32 device,u32 func, + u32 class,u32 subclass) +{ + pci_device_t dev; + + dev = (bus<<24)|(device<<19)|(func<<16)|(class<<8)|(subclass); + if(s_pci.device_count < MAX_PCI_DEVICES) + s_pci.devices[s_pci.device_count++] = dev; +} + +static void pci_scan_bus(u32 bus); + +static void pci_scan_device(u32 bus,u32 dev,u32 func) +{ + u32 class = pci_read_config_word(bus,dev,func,0x08) >> 16; + u32 hdr = (pci_read_config_word(bus,dev,func,0x0C) >> 16) & 0xFF; + + if(class == 0x0604) //PCI-to-PCI bridge + { + pci_scan_bus((pci_read_config_word( + bus,dev,func,0x18) >> 8) & 0xFF); + } + if(hdr & 0x80 && func == 0) //Multifunction + { + for(u32 i = 1; i < 8; i++) + { + u32 vendor = pci_read_config_word(bus,dev,i,0x00) & 0xFFFF; + if(vendor != 0xFFFF) + pci_scan_device(bus,dev,i); + } + } + + pci_add_device(bus,dev,func,class>>8,class&0xFF); +} + +static void pci_scan_bus(u32 bus) +{ + for(u32 i = 0; i < 32; i++) + { + u32 vendor = pci_read_config_word(bus,i,0,0x00) & 0xFFFF; + if(vendor != 0xFFFF) + pci_scan_device(bus,i,0); + } +} + +void pci_detect_hardware() +{ + s_pci.device_count = 0; + for(u32 i = 0; i < 256; i++) + pci_scan_bus(i); +} + +pci_device_t pci_find_device(u32 class,u32 subclass) +{ + u32 data = class<<8|subclass; + for(u32 i = 0; i < s_pci.device_count; i++) + { + if((s_pci.devices[i] & 0xFFFF) == data) + return s_pci.devices[i]; + } + return 0; +} diff --git a/kernel_old/pci.h b/kernel_old/pci.h new file mode 100644 index 0000000..86c05c4 --- /dev/null +++ b/kernel_old/pci.h @@ -0,0 +1,24 @@ +#ifndef __PCI_H +#define __PCI_H + +#include "os.h" + +#define PCI_CONFIG_ADDRESS 0xCF8 +#define PCI_CONFIG_DATA 0xCFC + +#define MAX_PCI_DEVICES 256 + +// bbbbbbbbdddddfffccccccccssssssss +typedef u32 pci_device_t; + +u32 pci_read_config_word(u32 bus,u32 device,u32 function,u32 hword); +u32 pci_read_config_word_dev(pci_device_t dev,u32 hword); + +void pci_dump(); +void pci_detect_hardware(); + +//Returns device index +//-1 for NOTFOUND +pci_device_t pci_find_device(u32 class,u32 subclass); + +#endif diff --git a/kernel_old/pic.c b/kernel_old/pic.c new file mode 100644 index 0000000..896f5bb --- /dev/null +++ b/kernel_old/pic.c @@ -0,0 +1,45 @@ +#include "pic.h" + +void pic_init(int master,int slave) +{ + outb(PIC1,ICW1); + outb(PIC2,ICW1); + + outb(PIC1+1,master&0xFF); + outb(PIC2+1,slave&0xFF); + + outb(PIC1+1,4); + outb(PIC2+1,2); + + outb(PIC1+1,ICW4); + outb(PIC2+1,ICW4); + + //Disable all IRQs + outb(PIC1+1,0xFF); + outb(PIC2+1,0xFF); +} + +void pic_set_mask(int irq,int enabled) +{ + u16 pic; + u8 mask; + + if(irq >= 8) + { + pic = PIC2+1; + irq -= 8; + } + else pic = PIC1+1; + + mask = inb(pic); + if(enabled) mask &= ~(1<= 8) outb(PIC2,0x20); + outb(PIC1,0x20); +} diff --git a/kernel_old/pic.h b/kernel_old/pic.h new file mode 100644 index 0000000..5a5f167 --- /dev/null +++ b/kernel_old/pic.h @@ -0,0 +1,16 @@ +#ifndef __PIC_H +#define __PIC_H + +#include "io.h" + +#define PIC1 0x20 +#define PIC2 0xA0 + +#define ICW1 0x11 +#define ICW4 0x01 + +void pic_init(int master,int slave); +void pic_set_mask(int irq,int enabled); +void pic_send_eoi(int irq); + +#endif diff --git a/kernel_old/pit.c b/kernel_old/pit.c new file mode 100644 index 0000000..98f730f --- /dev/null +++ b/kernel_old/pit.c @@ -0,0 +1,36 @@ +#include "pit.h" +#include "pic.h" +#include "idt.h" + +static u32 s_counter = 0; + +void timer_interrupt(int idx) +{ + if(s_counter) s_counter--; + pic_send_eoi(0); +} + +void sleep(u32 msecs) +{ + __asm("cli"); + if(msecs < 55) msecs = 55; + s_counter = msecs/55; + __asm("sti"); + //pic_set_mask(0,1); + do { + __asm("hlt"); //Wait for IRQ + } while(s_counter); + //pic_set_mask(0,0); +} + +void pit_init() +{ + //Setup IRQ + pic_set_mask(0,1); + idt_setup(_int15_handler,timer_interrupt,32,IDT_TYPE_INTERRUPT); + + //Init PIT + outb(0x43,0x36); + outb(0x40,0x00); + outb(0x40,0x00); +} diff --git a/kernel_old/pit.h b/kernel_old/pit.h new file mode 100644 index 0000000..3d4c7d7 --- /dev/null +++ b/kernel_old/pit.h @@ -0,0 +1,10 @@ +#ifndef __PIT_H +#define __PIT_H + +#include "io.h" + +void sleep(u32 msecs); + +void pit_init(); + +#endif diff --git a/kernel_old/stdlib.c b/kernel_old/stdlib.c new file mode 100644 index 0000000..726e8e2 --- /dev/null +++ b/kernel_old/stdlib.c @@ -0,0 +1,398 @@ +#include "stdlib.h" +#include "vga_terminal.h" +#include "keyboard.h" +#include "string.h" + +void iprint(int number) +{ + //4294967295 + char num[32]; + char* s = num; + int uns = 0; + + if(number < 0) + { + uns = 1; + number *= -1; + } + while(number > 10) + { + *s++ = '0'+(number%10); + number/=10; + } + *s++ = '0'+(number%10); + if(uns) *s++ = '-'; + s--; + while(s >= num) printchar(*s--); +} + +void uprint(u32 number) +{ + //4294967295 + char num[32]; + char* s = num; + while(number > 10) + { + *s++ = '0'+(number%10); + number/=10; + } + *s++ = '0'+(number%10); + s--; + while(s >= num) printchar(*s--); +} + +static char* xnums = "0123456789ABCDEF"; + +void xprint(u32 number) +{ + //FFFFFFFF + char num[16]; + char* s = num; + + while(s-num < 7) + { + *s++ = xnums[(number%16)]; + number/=16; + } + *s++ = xnums[(number%16)]; + *s++ = 'x'; + *s++ = '0'; + s--; + while(s >= num) printchar(*s--); +} + +void iprints(char* outs,int number) +{ + //4294967295 + char num[32]; + char* s = num; + int uns = 0; + + if(number < 0) + { + uns = 1; + number *= -1; + } + while(number > 10) + { + *s++ = '0'+(number%10); + number/=10; + } + *s++ = '0'+(number%10); + if(uns) *s++ = '-'; + while(s >= num) *outs++ = *--s; + *outs++ = '\0'; +} + +void uprints(char* outs,u32 number) +{ + //4294967295 + char num[32]; + char* s = num; + while(number > 10) + { + *s++ = '0'+(number%10); + number/=10; + } + *s++ = '0'+(number%10); + while(s >= num) *outs++ = *--s; + *outs++ = '\0'; +} + +void xprints(char* outs,u32 number) +{ + //FFFFFFFF + char num[16]; + char* s = num; + + while(s-num < 7) + { + *s++ = xnums[(number%16)]; + number/=16; + } + *s++ = xnums[(number%16)]; + *s++ = 'x'; + *s++ = '0'; + while(s >= num) *outs++ = *--s; + *outs++ = '\0'; +} + +void kprint(char* str) +{ + while(*str) printchar(*str++); +} + +void ksprintf(char* dst,u32 maxLen,const char* fmt,...) +{ + u32* argp; + char* cur,*end,c; + char numbuf[64]; + + argp = ((u32*)&fmt)+1; + cur = dst; + end = dst+maxLen; + while((c = *fmt++) && cur != end) + { + if(c == '%') + { + char* p = numbuf; + c = *fmt++; + if(c == 'd') + { + iprints(numbuf,*(int*)argp++); + while((*cur++ = *p++)) + if(cur == end) break; + cur--; + } + else if(c == 'u') + { + uprints(numbuf,*(int*)argp++); + while((*cur++ = *p++)) + if(cur == end) break; + cur--; + } + else if(c == 'p' || c == 'x') + { + xprints(numbuf,*(u32*)argp++); + while((*cur++ = *p++)) + if(cur == end) break; + cur--; + } + else if(c == 's') + { + const char* str = *(const char**)argp++; + while((*cur++ = *str++)) + if(cur == end) break; + cur--; + } + else if(c == '%') + { + if(cur != end) *cur++ = '%'; + } + } + else + { + if(cur == end) break; + *cur++ = c; + } + } + if(cur == end) + *(end-1) = '\0'; +} + +void kprintf(const char* fmt,...) +{ + u32* argp; + char c; + + argp = ((u32*)&fmt)+1; + while((c = *fmt++)) + { + if(c == '%') + { + c = *fmt++; + switch(c) + { + case 'd': iprint(*(int*)argp++); break; + case 'u': uprint(*(u32*)argp++); break; + case 'p': + case 'x': xprint(*(u32*)argp++); break; + case 'c': printchar((char)(*(u32*)argp++)); break; + case 's': kprint((char*)(*(u32*)argp++)); break; + case '%': printchar('%'); break; + } + } + else printchar(c); + } +} + + +u8 kgetch() +{ + u8 key; + while(keyboard_scan_code() == 0) + {__asm("hlt");} + key = keyboard_scan_code(); + keyboard_reset_irq1_vars(); + return key; +} + +u8 kgetc() +{ + u8 ascii; + while(keyboard_scan_code() == 0) + {__asm("hlt");} + ascii = keyboard_ascii(); + keyboard_reset_irq1_vars(); + return ascii; +} + +void kgets(char* buf,size_t max) +{ + u8 ch; + char* ptr,*end; + + ptr = buf; + end = buf + max; + *ptr = '\0'; + while((ch = kgetc()) != '\n') + { + if(ch == '\b') + { + if(ptr != buf) *ptr-- = '\0'; + printchar('\b'); + } + else if(ptr != end-1) + { + *ptr++ = ch; + printchar(ch); + } + } + printchar('\n'); + if(ptr == end) ptr--; + *ptr = '\0'; +} + +//static char* katoi_base = "0123456789ABCDEF"; + +static i32 _katoi(char* str,int base,u32 len) +{ + char* end; + i32 i,pow; + i32 num; + + i = 0; + num = 0; + pow = 1; + end = str+len-1; + while(1) + { + if(*end == '-') + { + num *= -1; + break; + } + else if(*end == 'x') break; + for(i = 0; i < base; i++) + if(*end == xnums[i]) break; + num += i*pow; + pow *= base; + + if(end == str) break; + end--; + } + + return num; +} + +static u32 _katou(char* str,int base,u32 len) +{ + char* end; + u32 i,pow; + u32 num; + + i = 0; + num = 0; + pow = 1; + end = str+len-1; + while(1) + { + if(*end == 'x') break; + for(i = 0; i < base; i++) + if(*end == xnums[i]) break; + num += i*pow; + pow *= base; + + if(end == str) break; + end--; + } + + return num; +} + +i32 katoi(char* str,int base) +{ + return _katoi(str,base,kstrlen(str)); +} + +u32 katou(char* str,int base) +{ + return _katou(str,base,kstrlen(str)); +} + +static u32 _kstrchr_delim(char* buf,u32 base) +{ + u32 i,len; + char c; + + len = 0; + while(*buf) + { + c = *buf; + for(i = 0; i < base; i++) + { + if(c == xnums[i]) break; + } + if(i == base && c != '-') break; + buf++; + len++; + } + return len; +} + +void ksscanf(char* buf,char* fmt,...) +{ + u32* argp; + u32 len,maxLen; + union { + i32* iptr; + u32* uptr; + char* sptr; + } u; + char c,*stk; + + argp = ((u32*)&fmt)+1; + while((c = *fmt)) + { + //kprintf("%c %c\n",c,*buf); + if(c == '%') + { + c = *++fmt; + switch(c) + { + case 'u': + case 'd': + len = _kstrchr_delim(buf,10); + u.iptr = (i32*)(*(u32*)argp++); + *u.iptr = _katoi(buf,10,len); + buf += len; //we decrement because it will +1 + break; + case 'p': + case 'x': + buf += 2; //Skip 0x part + len = _kstrchr_delim(buf,16); + u.iptr = (i32*)(*(u32*)argp++); + *u.iptr = _katoi(buf,16,len); + buf += len; //we decrement because it will +1 + break; + case 's': + stk = kstrchr(buf,*(fmt+1)); + u.sptr = (char*)(*(u32*)argp++); + maxLen = (*(u32*)argp++); + if(!stk) + { + u.sptr[0] = '\0'; + break; + } + len = (u32)stk-(u32)buf; + if(len > maxLen) len = maxLen; + kmemcpy(u.sptr,buf,len); + u.sptr[len] = '\0'; + buf += len; + break; + } + + } else buf++; + fmt++; + } +} diff --git a/kernel_old/stdlib.h b/kernel_old/stdlib.h new file mode 100644 index 0000000..29fec14 --- /dev/null +++ b/kernel_old/stdlib.h @@ -0,0 +1,44 @@ +#ifndef __STDLIB_H +#define __STDLIB_H + +#include "os.h" +#include "vga_terminal.h" + +//stdlib.h + +extern void kmemcpy(void* dst,const void* src,u32 len); +extern int kmemcmp(const void* dst,const void* src,u32 len); +extern void kmemzero(void* dst,u32 len); + +//termlib.h +#define kputc printchar + +void iprint(int number); +void uprint(u32 number); +void xprint(u32 number); + +void iprints(char* str,int number); +void uprints(char* str,u32 number); +void xprints(char* str,u32 number); + +void kprint(char* str); + +void ksprintf(char* dst,u32 maxLen,const char* fmt,...); +void kprintf(const char* fmt,...); + +//termio.h + +u8 kgetch(); //Wait for key scan code +u8 kgetc(); //Wait for ASCII character + +void kgets(char* buf,size_t max); + +i32 katoi(char* str,int base); + +void ksscanf(char* buf,char* fmt,...); + +#define _debug() \ + kprintf("_debug at %s:%u\n",__FILE__,__LINE__); \ + kgetc(); + +#endif diff --git a/kernel_old/string.c b/kernel_old/string.c new file mode 100644 index 0000000..9c439cf --- /dev/null +++ b/kernel_old/string.c @@ -0,0 +1,49 @@ +#include "string.h" +#include "stdlib.h" + +u32 kstrlen(const char* str) +{ + u32 len = 0; + while(*str++) len++; + return len; +} + +void kstrcpy(char* dst,const char* src) +{ + while((*dst++ = *src++)){} +} + +void kstrncpy(char* dst,const char* src,u32 maxLen) +{ + maxLen=-1; + while((*dst++ = *src++) && --maxLen){} + if(!maxLen) dst[maxLen] = '\0'; +} + +char* kstrchr(char* src,char chr) +{ + while(*src) + { + if(*src == chr) return src; + src++; + } + return NULL; +} + +char* kstrrchr(char* src,char chr) +{ + char* ptr; + + ptr = src+kstrlen(src)-1; + while(ptr != src) + { + if(*ptr == chr) return ptr; + ptr--; + } + return NULL; +} + +int kstrncmp(const char* haystack,char* needle) +{ + return kmemcmp(haystack,needle,kstrlen(needle)); +} diff --git a/kernel_old/string.h b/kernel_old/string.h new file mode 100644 index 0000000..25af14f --- /dev/null +++ b/kernel_old/string.h @@ -0,0 +1,16 @@ +#ifndef __STRING_H +#define __STRING_H + +#include "os.h" + +u32 kstrlen(const char* str); + +void kstrcpy(char* dst,const char* src); +void kstrncpy(char* dst,const char* src,u32 maxLen); + +char* kstrchr(char* src,char chr); +char* kstrrchr(char* src,char chr); + +int kstrncmp(const char* haystack,char* needle); + +#endif diff --git a/kernel_old/termio.c b/kernel_old/termio.c new file mode 100644 index 0000000..57920dc --- /dev/null +++ b/kernel_old/termio.c @@ -0,0 +1,175 @@ +#include "termio.h" +#include "keyboard.h" +#include "vga_terminal.h" +#include "string.h" + +u8 kgetch() +{ + u8 key; + while(keyboard_scan_code() == 0) + {__asm("hlt");} + key = keyboard_scan_code(); + keyboard_reset_irq1_vars(); + return key; +} + +u8 kgetc() +{ + u8 ascii; + while(keyboard_scan_code() == 0) + {__asm("hlt");} + ascii = keyboard_ascii(); + keyboard_reset_irq1_vars(); + return ascii; +} + +void kgets(char* buf,size_t max) +{ + u8 ch; + char* ptr,*end; + + ptr = buf; + end = buf + max; + *ptr = '\0'; + while((ch = kgetc()) != '\n') + { + if(ch == '\b') + { + if(ptr != buf) *ptr-- = '\0'; + printchar('\b'); + } + else if(ptr != end-1) + { + *ptr++ = ch; + printchar(ch); + } + } + printchar('\n'); + if(ptr == end) ptr--; + *ptr = '\0'; +} + +static char* katoi_base = "0123456789ABCDEF"; + +static i32 _katoi(char* str,int base,u32 len) +{ + char* end; + i32 i,pow; + i32 num; + + i = 0; + num = 0; + pow = 1; + end = str+len-1; + while(1) + { + if(*end == '-') + { + num *= -1; + break; + } + else if(*end == 'x') break; + for(i = 0; i < base; i++) + if(*end == katoi_base[i]) break; + num += i*pow; + pow *= base; + + if(end == str) break; + end--; + } + + return num; +} + +static u32 _katou(char* str,int base,u32 len) +{ + char* end; + u32 i,pow; + u32 num; + + i = 0; + num = 0; + pow = 1; + end = str+len-1; + while(1) + { + if(*end == 'x') break; + for(i = 0; i < base; i++) + if(*end == katoi_base[i]) break; + num += i*pow; + pow *= base; + + if(end == str) break; + end--; + } + + return num; +} + +i32 katoi(char* str,int base) +{ + return _katoi(str,base,kstrlen(str)); +} + +u32 katou(char* str,int base) +{ + return _katou(str,base,kstrlen(str)); +} + +static u32 _kstrchr_delim(char* buf,u32 base) +{ + u32 i,len; + char c; + + len = 0; + while(*buf) + { + c = *buf; + for(i = 0; i < base; i++) + { + if(c == katoi_base[i]) break; + } + if(i == base && c != '-') break; + buf++; + len++; + } + return len; +} + +void ksscanf(char* buf,char* fmt,...) +{ + u32* argp; + u32 len; + i32* iptr; + u32* uptr; + char c,*stk; + + argp = ((u32*)&fmt)+1; + while((c = *fmt)) + { + //kprintf("%c %c\n",c,*buf); + if(c == '%') + { + c = *++fmt; + switch(c) + { + case 'u': + case 'd': + len = _kstrchr_delim(buf,10); + iptr = (i32*)(*(u32*)argp++); + *iptr = _katoi(buf,10,len); + buf += len; //we decrement because it will +1 + break; + case 'p': + case 'x': + buf += 2; //Skip 0x part + len = _kstrchr_delim(buf,16); + iptr = (i32*)(*(u32*)argp++); + *iptr = _katoi(buf,16,len); + buf += len; //we decrement because it will +1 + } + + } else buf++; + fmt++; + } +} diff --git a/kernel_old/termio.h b/kernel_old/termio.h new file mode 100644 index 0000000..2cf77ce --- /dev/null +++ b/kernel_old/termio.h @@ -0,0 +1,7 @@ +#ifndef __TERMIO_H +#define __TERMIO_H + +#include "os.h" +#include "stdlib.h" //redirect to stdlib.h + +#endif diff --git a/kernel_old/termlib.c b/kernel_old/termlib.c new file mode 100644 index 0000000..37a613e --- /dev/null +++ b/kernel_old/termlib.c @@ -0,0 +1,201 @@ +#include "termlib.h" +#include "vga_terminal.h" +#include "string.h" + +void iprint(int number) +{ + //4294967295 + char num[32]; + char* s = num; + int uns = 0; + + if(number < 0) + { + uns = 1; + number *= -1; + } + while(number > 10) + { + *s++ = '0'+(number%10); + number/=10; + } + *s++ = '0'+(number%10); + if(uns) *s++ = '-'; + s--; + while(s >= num) printchar(*s--); +} + +void uprint(u32 number) +{ + //4294967295 + char num[32]; + char* s = num; + while(number > 10) + { + *s++ = '0'+(number%10); + number/=10; + } + *s++ = '0'+(number%10); + s--; + while(s >= num) printchar(*s--); +} + +const char* xnums = "0123456789ABCDEF"; + +void xprint(u32 number) +{ + //FFFFFFFF + char num[16]; + char* s = num; + + while(s-num < 7) + { + *s++ = xnums[(number%16)]; + number/=16; + } + *s++ = xnums[(number%16)]; + *s++ = 'x'; + *s++ = '0'; + s--; + while(s >= num) printchar(*s--); +} + +void iprints(char* outs,int number) +{ + //4294967295 + char num[32]; + char* s = num; + int uns = 0; + + if(number < 0) + { + uns = 1; + number *= -1; + } + while(number > 10) + { + *s++ = '0'+(number%10); + number/=10; + } + *s++ = '0'+(number%10); + if(uns) *s++ = '-'; + while(s >= num) *outs++ = *--s; + *outs++ = '\0'; +} + +void uprints(char* outs,u32 number) +{ + //4294967295 + char num[32]; + char* s = num; + while(number > 10) + { + *s++ = '0'+(number%10); + number/=10; + } + *s++ = '0'+(number%10); + while(s >= num) *outs++ = *--s; + *outs++ = '\0'; +} + +void xprints(char* outs,u32 number) +{ + //FFFFFFFF + char num[16]; + char* s = num; + + while(s-num < 7) + { + *s++ = xnums[(number%16)]; + number/=16; + } + *s++ = xnums[(number%16)]; + *s++ = 'x'; + *s++ = '0'; + while(s >= num) *outs++ = *--s; + *outs++ = '\0'; +} + +void kprint(char* str) +{ + while(*str) printchar(*str++); +} + +void ksprintf(char* dst,u32 maxLen,const char* fmt,...) +{ + u32* argp; + char* cur,*end,c; + char numbuf[64]; + + argp = ((u32*)&fmt)+1; + cur = dst; + end = dst+maxLen; + while((c = *fmt++) && cur != end) + { + if(c == '%') + { + char* p = numbuf; + c = *fmt++; + if(c == 'd') + { + iprints(numbuf,*(int*)argp++); + while((*cur++ = *p++)) + if(cur == end) break; + cur--; + } + else if(c == 'u') + { + uprints(numbuf,*(int*)argp++); + while((*cur++ = *p++)) + if(cur == end) break; + cur--; + } + else if(c == 'p' || c == 'x') + { + xprints(numbuf,*(u32*)argp++); + while((*cur++ = *p++)) + if(cur == end) break; + cur--; + } + else if(c == 's') + { + const char* str = *(const char**)argp++; + while((*cur++ = *str++)) + if(cur == end) break; + cur--; + } + } + else + { + if(cur == end) break; + *cur++ = c; + } + } + if(cur == end) + *(end-1) = '\0'; +} + +void kprintf(const char* fmt,...) +{ + u32* argp; + char c; + + argp = ((u32*)&fmt)+1; + while((c = *fmt++)) + { + if(c == '%') + { + c = *fmt++; + switch(c) + { + case 'd': iprint(*(int*)argp++); break; + case 'u': uprint(*(u32*)argp++); break; + case 'p': + case 'x': xprint(*(u32*)argp++); break; + case 'c': printchar((char)(*(u32*)argp++)); break; + case 's': kprint((char*)(*(u32*)argp++)); break; + } + } + else printchar(c); + } +} diff --git a/kernel_old/termlib.h b/kernel_old/termlib.h new file mode 100644 index 0000000..30b9462 --- /dev/null +++ b/kernel_old/termlib.h @@ -0,0 +1,7 @@ +#ifndef __TERMLIB_H +#define __TERMLIB_H + +#include "os.h" +#include "stdlib.h" //redirect to stdlib.h + +#endif diff --git a/kernel_old/vga_terminal.c b/kernel_old/vga_terminal.c new file mode 100644 index 0000000..fdf0bc5 --- /dev/null +++ b/kernel_old/vga_terminal.c @@ -0,0 +1,107 @@ +#include "vga_terminal.h" +#include "paging.h" +#include "os.h" +#include "io.h" + +static u8 s_cCurAttr = DEFAULT_COLOR; +u32 s_iX; +u32 s_iY; + +void vga_terminal_init() +{ + //Map 0xB8000 to 0xC100B8000 + page_map(OS_VIDEO_BUFFER,0x000B8000,80*25,PAGE_TABLE_READWRITE); +} + +void update_cursor() +{ + u16 pos; + pos = s_iY * 80 + s_iX; + + outb(0x3D4, 0x0F); + outb(0x3D5, (u8) (pos & 0xFF)); + outb(0x3D4, 0x0E); + outb(0x3D5, (u8) ((pos >> 8) & 0xFF)); +} + +void cls() +{ + u32 i; + for(i = 0; i < SCR_CHARS*SCR_LINES; i++) + SCR_TEXT_BUF[i] = SCR_ENTRY(0,DEFAULT_COLOR); + s_iX = s_iY = 0; + update_cursor(); +} + +void shiftscreen(); + +void printchar(unsigned char c) +{ + if(c == '\n' || c == '\r' || c == '\t' || c == '\b') // Control characters + { + if(c == '\r') s_iX = 0; + else if(c == '\n') s_iX = SCR_CHARS; + else if(c == '\t') s_iX = (s_iX + 8) & ~7; + else if(c == '\b') + { + if(s_iX) s_iX--; + else if(s_iY) + { + s_iY--; + s_iX = SCR_CHARS-1; + } + //Remove character + SCR_TEXT_BUF[s_iY*SCR_CHARS+s_iX] = SCR_ENTRY(0,s_cCurAttr); + } + } + else // Text characters + SCR_TEXT_BUF[s_iY*SCR_CHARS+s_iX++] = SCR_ENTRY(c,s_cCurAttr); + + if(s_iX > SCR_CHARS-1) + { + s_iX = 0; + if(s_iY < SCR_LINES-1) + s_iY++; + else shiftscreen(); + } + + update_cursor(); +} + +void shiftscreen() +{ + //cls(); + u32 x,y; + for(y = 1; y < SCR_LINES; y++) + { + for(x = 0; x < SCR_CHARS; x++) + { + SCR_TEXT_BUF[(y-1)*SCR_CHARS+x] + = SCR_TEXT_BUF[y*SCR_CHARS+x]; + } + } + + for(x = 0; x < SCR_CHARS; x++) + { + SCR_TEXT_BUF[(SCR_LINES-1)*SCR_CHARS+x] + = SCR_ENTRY(0,DEFAULT_COLOR); + } +} + +void chg_color(u8 color) +{ + s_cCurAttr = color; +} + +void print(const char* str) +{ + while(*str) printchar(*str++); +} + +void move_to_next_char(){} +void move_to_next_line(){} +void locate(int h, int w) +{ + s_iX = w; + s_iY = h; +} diff --git a/kernel_old/vga_terminal.h b/kernel_old/vga_terminal.h new file mode 100644 index 0000000..58267f2 --- /dev/null +++ b/kernel_old/vga_terminal.h @@ -0,0 +1,67 @@ +#ifndef __VGA_TERMINAL_H +#define __VGA_TERMINAL_H + +#include "os.h" + +#define SCR_CHARS 80 +#define SCR_LINES 25 +//#define SCR_TEXT_BUF ((u16*)0xB8000) +#define SCR_TEXT_BUF ((u16*)OS_VIDEO_BUFFER) +#define SCR_ENTRY(ch,col) ((col<<8)|ch) + +#define BLACK 0 +#define BLUE 1 +#define GREEN 2 +#define CYAN 2 +#define RED 4 +#define GRAY 8 +#define WHITE 15 +#define MAGENTA 13 + +#define BG_BLACK (0<<4) +#define BG_BLUE (1<<4) +#define BG_GREEN (2<<4) +#define BG_RED (4<<4) +#define BG_GRAY (8<<4) +#define BG_WHITE (15<<4) + +#define DEFAULT_COLOR BG_BLACK|7 + +enum vga_color { + VGA_COLOR_BLACK = 0, + VGA_COLOR_BLUE = 1, + VGA_COLOR_GREEN = 2, + VGA_COLOR_CYAN = 3, + VGA_COLOR_RED = 4, + VGA_COLOR_MAGENTA = 5, + VGA_COLOR_BROWN = 6, + VGA_COLOR_LIGHT_GREY = 7, + VGA_COLOR_DARK_GREY = 8, + VGA_COLOR_LIGHT_BLUE = 9, + VGA_COLOR_LIGHT_GREEN = 10, + VGA_COLOR_LIGHT_CYAN = 11, + VGA_COLOR_LIGHT_RED = 12, + VGA_COLOR_LIGHT_MAGENTA = 13, + VGA_COLOR_LIGHT_BROWN = 14, + VGA_COLOR_WHITE = 15, +}; + +static inline u8 vga_entry_color(enum vga_color fg, enum vga_color bg) { + return fg | bg << 4; +} + +static inline u16 vga_entry(unsigned char uc, u8 color) { + return (u16) uc | (u16) color << 8; +} + +void vga_terminal_init(); + +void cls(); +void shiftscreen(); +void printchar(unsigned char c); +void chg_color(u8 color); +void print(const char* str); +void locate(int h, int w); + + +#endif diff --git a/kernel_old/x86_utils.c b/kernel_old/x86_utils.c new file mode 100644 index 0000000..5513ea8 --- /dev/null +++ b/kernel_old/x86_utils.c @@ -0,0 +1,37 @@ +#include "x86utils.h" +#include "vga_terminal.h" +#include "termlib.h" + +void x86_print_regs() +{ + struct regs_s regs; + x86_get_regs(®s); + + chg_color(VGA_COLOR_WHITE); + kprintf( + "[========\t\tx86 register dump\t\t========]\n" + "\tEAX\t%x\tECX\t%x\n\tEDX\t%x\tEBX\t%x\n" + "\tESP\t%x\tEBP\t%x\n\tESI\t%x\tEDI\t%x\n" + "\n\tEIP\t%x\n" + "\tEFLAGS\t%x\n" + "\n\tCS %x DS %x SS %x\n" + "\tES %x FS %x GS %x\n" + "\n\tGDT\t%x\n\tIDT\t%x\n\tLDT\t%x\n\tTR\t%x\n" + "\n\tCR0\t%x\tCR2\t%x\n" + "\tCR3\t%x\tCR4\t%x\n" + "[========\t\tx86 register dump\t\t========]\n", + regs.eax,regs.ecx,regs.edx,regs.ebx, + regs.esp,regs.ebp,regs.esi,regs.edi, + regs.eip, + regs.eflags, + regs.cs,regs.ds,regs.ss, + regs.es,regs.fs,regs.gs, + regs.gdt, + regs.idt, + regs.ldt, + regs.tr, + regs.cr0,regs.cr2, + regs.cr3,regs.cr4 + ); + chg_color(VGA_COLOR_MAGENTA); +} diff --git a/kernel_old/x86gdt.asm b/kernel_old/x86gdt.asm new file mode 100644 index 0000000..05c98fc --- /dev/null +++ b/kernel_old/x86gdt.asm @@ -0,0 +1,36 @@ +section .text +global _gdt_install +_gdt_install: + push ebp + mov ebp,esp + + ; [ebp+0x08] = GDT table ptr + ; [ebp+0x0C] = GDT limit + mov eax,dword [ebp+0x08] + mov dword [gdt_base],eax + mov eax,dword [ebp+0x0C] + mov word [gdt_limit],ax + + lgdt [x86gdt] + ; 0x00 - NULL desc + ; 0x08 - CODE desc + ; 0x10 - DATA desc + + ; Reloads segments + jmp 0x08:reload_cs +reload_cs: + mov ax,0x10 + mov ds,ax + mov es,ax + mov ss,ax + mov gs,ax + mov fs,ax + + mov esp,ebp + pop ebp + ret + +section .data +x86gdt: + gdt_limit dw 0 + gdt_base dd 0 diff --git a/kernel_old/x86idt.asm b/kernel_old/x86idt.asm new file mode 100644 index 0000000..bf873d7 --- /dev/null +++ b/kernel_old/x86idt.asm @@ -0,0 +1,23 @@ +section .text +global _idt_install +_idt_install: + push ebp + mov ebp,esp + + ; [ebp+0x08] = base + ; [ebp+0x0C] = limit + mov eax,dword [ebp+0x08] + mov dword [idt_base],eax + mov eax,dword [ebp+0x0C] + mov word [idt_limit],ax + + lidt [idt_desc] + + mov esp,ebp + pop ebp + ret + +section .data +idt_desc: + idt_limit dw 0 + idt_base dd 0 diff --git a/kernel_old/x86int.asm b/kernel_old/x86int.asm new file mode 100644 index 0000000..90de371 --- /dev/null +++ b/kernel_old/x86int.asm @@ -0,0 +1,483 @@ +section .text + +global _int0_handler +global _int1_handler +global _int2_handler +global _int3_handler +global _int4_handler +global _int5_handler +global _int6_handler +global _int7_handler +global _int8_handler +global _int9_handler +global _int10_handler +global _int11_handler +global _int12_handler +global _int13_handler +global _int14_handler +global _int15_handler +global _int16_handler +global _int17_handler +global _int18_handler +global _int19_handler +global _int20_handler +global _int21_handler +global _int22_handler +global _int23_handler +global _int24_handler +global _int25_handler +global _int26_handler +global _int27_handler +global _int28_handler +global _int29_handler +global _int30_handler +global _int31_handler +extern idt_handler_entry + +_int0_handler: + pushad + call near .fun1 +.fun1: + pop eax + sub eax,6 ; call instruction size + + push eax + call idt_handler_entry + add esp,4 + + popad + iretd + +_int1_handler: + pushad + call near .fun1 +.fun1: + pop eax + sub eax,6 ; call instruction size + + push eax + call idt_handler_entry + add esp,4 + + popad + iretd + +_int2_handler: + pushad + call near .fun1 +.fun1: + pop eax + sub eax,6 ; call instruction size + + push eax + call idt_handler_entry + add esp,4 + + popad + iretd + +_int3_handler: + pushad + call near .fun1 +.fun1: + pop eax + sub eax,6 ; call instruction size + + push eax + call idt_handler_entry + add esp,4 + + popad + iretd + +_int4_handler: + pushad + call near .fun1 +.fun1: + pop eax + sub eax,6 ; call instruction size + + push eax + call idt_handler_entry + add esp,4 + + popad + iretd + +_int5_handler: + pushad + call near .fun1 +.fun1: + pop eax + sub eax,6 ; call instruction size + + push eax + call idt_handler_entry + add esp,4 + + popad + iretd + +_int6_handler: + pushad + call near .fun1 +.fun1: + pop eax + sub eax,6 ; call instruction size + + push eax + call idt_handler_entry + add esp,4 + + popad + iretd + +_int7_handler: + pushad + call near .fun1 +.fun1: + pop eax + sub eax,6 ; call instruction size + + push eax + call idt_handler_entry + add esp,4 + + popad + iretd + +_int8_handler: + pushad + call near .fun1 +.fun1: + pop eax + sub eax,6 ; call instruction size + + push eax + call idt_handler_entry + add esp,4 + + popad + iretd + +_int9_handler: + pushad + call near .fun1 +.fun1: + pop eax + sub eax,6 ; call instruction size + + push eax + call idt_handler_entry + add esp,4 + + popad + iretd + +_int10_handler: + pushad + call near .fun1 +.fun1: + pop eax + sub eax,6 ; call instruction size + + push eax + call idt_handler_entry + add esp,4 + + popad + iretd + +_int11_handler: + pushad + call near .fun1 +.fun1: + pop eax + sub eax,6 ; call instruction size + + push eax + call idt_handler_entry + add esp,4 + + popad + iretd + +_int12_handler: + pushad + call near .fun1 +.fun1: + pop eax + sub eax,6 ; call instruction size + + push eax + call idt_handler_entry + add esp,4 + + popad + iretd + +_int13_handler: + pushad + call near .fun1 +.fun1: + pop eax + sub eax,6 ; call instruction size + + push eax + call idt_handler_entry + add esp,4 + + popad + iretd + +_int14_handler: + pushad + call near .fun1 +.fun1: + pop eax + sub eax,6 ; call instruction size + + push eax + call idt_handler_entry + add esp,4 + + popad + iretd + +_int15_handler: + pushad + call near .fun1 +.fun1: + pop eax + sub eax,6 ; call instruction size + + push eax + call idt_handler_entry + add esp,4 + + popad + iretd + +_int16_handler: + pushad + call near .fun1 +.fun1: + pop eax + sub eax,6 ; call instruction size + + push eax + call idt_handler_entry + add esp,4 + + popad + iretd + +_int17_handler: + pushad + call near .fun1 +.fun1: + pop eax + sub eax,6 ; call instruction size + + push eax + call idt_handler_entry + add esp,4 + + popad + iretd + +_int18_handler: + pushad + call near .fun1 +.fun1: + pop eax + sub eax,6 ; call instruction size + + push eax + call idt_handler_entry + add esp,4 + + popad + iretd + +_int19_handler: + pushad + call near .fun1 +.fun1: + pop eax + sub eax,6 ; call instruction size + + push eax + call idt_handler_entry + add esp,4 + + popad + iretd + +_int20_handler: + pushad + call near .fun1 +.fun1: + pop eax + sub eax,6 ; call instruction size + + push eax + call idt_handler_entry + add esp,4 + + popad + iretd + +_int21_handler: + pushad + call near .fun1 +.fun1: + pop eax + sub eax,6 ; call instruction size + + push eax + call idt_handler_entry + add esp,4 + + popad + iretd + +_int22_handler: + pushad + call near .fun1 +.fun1: + pop eax + sub eax,6 ; call instruction size + + push eax + call idt_handler_entry + add esp,4 + + popad + iretd + +_int23_handler: + pushad + call near .fun1 +.fun1: + pop eax + sub eax,6 ; call instruction size + + push eax + call idt_handler_entry + add esp,4 + + popad + iretd + +_int24_handler: + pushad + call near .fun1 +.fun1: + pop eax + sub eax,6 ; call instruction size + + push eax + call idt_handler_entry + add esp,4 + + popad + iretd + +_int25_handler: + pushad + call near .fun1 +.fun1: + pop eax + sub eax,6 ; call instruction size + + push eax + call idt_handler_entry + add esp,4 + + popad + iretd + +_int26_handler: + pushad + call near .fun1 +.fun1: + pop eax + sub eax,6 ; call instruction size + + push eax + call idt_handler_entry + add esp,4 + + popad + iretd + +_int27_handler: + pushad + call near .fun1 +.fun1: + pop eax + sub eax,6 ; call instruction size + + push eax + call idt_handler_entry + add esp,4 + + popad + iretd + +_int28_handler: + pushad + call near .fun1 +.fun1: + pop eax + sub eax,6 ; call instruction size + + push eax + call idt_handler_entry + add esp,4 + + popad + iretd + +_int29_handler: + pushad + call near .fun1 +.fun1: + pop eax + sub eax,6 ; call instruction size + + push eax + call idt_handler_entry + add esp,4 + + popad + iretd + +_int30_handler: + pushad + call near .fun1 +.fun1: + pop eax + sub eax,6 ; call instruction size + + push eax + call idt_handler_entry + add esp,4 + + popad + iretd + +_int31_handler: + pushad + call near .fun1 +.fun1: + pop eax + sub eax,6 ; call instruction size + + push eax + call idt_handler_entry + add esp,4 + + popad + iretd diff --git a/kernel_old/x86io.asm b/kernel_old/x86io.asm new file mode 100644 index 0000000..cf397c7 --- /dev/null +++ b/kernel_old/x86io.asm @@ -0,0 +1,112 @@ +section .text +global inb +global outb +global inw +global outw +global inl +global outl +global _insw +global _outsw +global _insw256 +global _outsw256 + +inb: + mov edx,dword [esp+0x04] + in al,dx + + ret + +outb: + mov edx,dword [esp+0x04] + mov eax,dword [esp+0x08] + out dx,al + ret + +inw: + mov edx,dword [esp+0x04] + in ax,dx + ret + +outw: + mov edx,dword [esp+0x04] + mov eax,dword [esp+0x08] + out dx,ax + ret + +inl: + mov edx,dword [esp+0x04] + in eax,dx + ret + +outl: + mov edx,dword [esp+0x04] + mov eax,dword [esp+0x08] + out dx,eax + ret + +_insw: + push ebp + mov ebp,esp + + ; [ebp+0x08] - port + ; [ebp+0x0C] - buffer + ; [ebp+0x10] - count + + push edi + push ecx + + mov edx,dword [ebp+0x08] + mov edi,dword [ebp+0x0C] + mov ecx,dword [ebp+0x10] + + rep insw + + pop ecx + pop edi + + mov esp,ebp + pop ebp + ret + +_outsw: + push ebp + mov ebp,esp + + ; [ebp+0x08] - port + ; [ebp+0x0C] - buffer + ; [ebp+0x10] - count + + push esi + push ecx + + mov edx,dword [ebp+0x08] + mov esi,dword [ebp+0x0C] + mov ecx,dword [ebp+0x10] + + rep outsw + + pop ecx + pop esi + + mov esp,ebp + pop ebp + ret + +_insw256: + push edi + push ecx + mov edi,dword [esp+0x0C] + mov ecx,256 + rep insw + pop ecx + pop edi + ret + +_outsw256: + push esi + push ecx + mov esi,dword [esp+0x0C] + rep outsw + pop ecx + pop edi + ret diff --git a/kernel_old/x86stdlib.asm b/kernel_old/x86stdlib.asm new file mode 100644 index 0000000..7536ef1 --- /dev/null +++ b/kernel_old/x86stdlib.asm @@ -0,0 +1,124 @@ +section .text +global kmemcpy +global kmemcmp +global kmemzero + +kmemcpy: + push ebp + mov ebp,esp + + ; [ebp+0x08] = dst + ; [ebp+0x0C] = src + ; [ebp+0x10] = size + + push edi + push esi + + mov edi,dword [ebp+0x08] + mov esi,dword [ebp+0x0C] + + mov ecx,dword [ebp+0x10] + shr ecx,2 ; Div by 4 + jz .cp_loop4_skip +.cp_loop4: + lodsd + stosd + loop .cp_loop4 +.cp_loop4_skip: + + mov ecx,dword [ebp+0x10] + and ecx,3 ; Remainder by 4 + jz .cp_loop1_skip +.cp_loop1: + lodsb + stosb + loop .cp_loop1 +.cp_loop1_skip: + + pop esi + pop edi + + mov esp,ebp + pop ebp + ret + +kmemcmp: + push ebp + mov ebp,esp + + xor eax,eax + ; [ebp+0x08] = dst + ; [ebp+0x0C] = src + ; [ebp+0x10] = size + + push edi + push esi + + mov edi,dword [ebp+0x08] + mov esi,dword [ebp+0x0C] + + mov ecx,dword [ebp+0x10] + shr ecx,2 ; Div by 4 + jz .cm_loop4_skip +.cm_loop4: + lodsd + cmp eax,dword [edi] + jnz .cm_inequal + add edi,4 + loop .cm_loop4 +.cm_loop4_skip: + + mov ecx,dword [ebp+0x10] + and ecx,3 ; Remainder by 4 + jz .cm_loop1_skip +.cm_loop1: + lodsb + cmp al,byte [edi] + jnz .cm_inequal + inc edi + loop .cm_loop1 +.cm_loop1_skip: + + xor eax,eax + jmp .cm_equal +.cm_inequal: + xor eax,eax + inc eax +.cm_equal: + pop esi + pop edi + + mov esp,ebp + pop ebp + ret + +kmemzero: + push ebp + mov ebp,esp + + ; [ebp+0x08] - dst + ; [ebp+0x0C] - size + + push edi + push ecx + + mov edi,dword [ebp+0x08] + + mov ecx,dword [ebp+0x0C] + shr ecx,2 ; Dividy by 4 + jz .skip4 + + xor eax,eax + rep stosd +.skip4: + + mov ecx,dword [ebp+0x0C] + and ecx,3 + rep stosd + + pop ecx + pop edi + + mov ebp,esp + pop ebp + ret diff --git a/kernel_old/x86utils.asm b/kernel_old/x86utils.asm new file mode 100644 index 0000000..7fe4ab5 --- /dev/null +++ b/kernel_old/x86utils.asm @@ -0,0 +1,96 @@ +section .text +global x86_get_regs +global x86_reload_cr3 +global _load_legacy_stack +extern legacy_esp + +x86_get_regs: + push ebp + mov ebp,esp + sub esp,8 + + ; [ebp+0x08] - struct regs + ; [ebp-0x04] - saved edi + ; [ebp-0x08] - saved ecx + + ;mov edx,0xCAFEBABE + + mov dword [ebp-0x04],edi + mov dword [ebp-0x08],ecx + ;mov esi,esp + ;lea esi,[esp-76] + mov edi,dword [ebp+0x08] + + pushad ; Push all general-purpose registers + pushfd ; Push flags + + ; Get selectors + push cs + push ds + push ss + push es + push gs + push fs + + ; Store GDT + sub esp,4 + sgdt [esp] + ; Store IDT + sub esp,4 + sidt [esp] + ; Store LDT + sub esp,4 + sldt [esp] + ; Store TR + sub esp,4 + str [esp] + ; Store machine status word + ;sub esp,4 + ;smsw [esp] + + mov eax,cr0 + push eax + mov eax,cr2 + push eax + mov eax,cr3 + push eax + mov eax,cr4 + push eax + + mov ecx,23 ; 8 regs + eflags + 6 segs + control regs +.pop_loop: + pop eax + stosd + loop .pop_loop + + ; Restore everything + mov edi,dword [ebp-0x04] + mov ecx,dword [ebp-0x08] + + mov eax,dword [ebp+0x08] + mov dword [eax+44],edi + mov dword [eax+68],ecx + + mov esp,ebp + pop ebp + + ; Restore EBP,ESP,EIP + mov dword [eax+52],ebp + mov dword [eax+56],esp + add dword [eax+56],8 ; Skip ret + 1st arg + + ; pop EIP and push it again to to do ret + pop dword [eax+76] + push dword [eax+76] + + ret + +x86_reload_cr3: + mov eax,cr3 + mov cr3,eax + ret + +_load_legacy_stack: + pop eax + mov esp,dword [legacy_esp] + jmp eax diff --git a/kernel_old/x86utils.h b/kernel_old/x86utils.h new file mode 100644 index 0000000..f1f91a6 --- /dev/null +++ b/kernel_old/x86utils.h @@ -0,0 +1,41 @@ +#ifndef __X86_UTILS_H +#define __X86_UTILS_H + +#include "os.h" + +struct __packed regs_s { + u32 cr4; + u32 cr3; + u32 cr2; + u32 cr0; + + u32 tr; + u32 ldt; + u32 idt; + u32 gdt; + + u32 fs; + u32 gs; + u32 es; + u32 ss; + u32 ds; + u32 cs; + + u32 eflags; + + u32 edi; + u32 esi; + u32 ebp; + u32 esp; + u32 ebx; + u32 edx; + u32 ecx; + u32 eax; + + u32 eip; +}; + +void x86_get_regs(struct regs_s* regs); +void x86_print_regs(); + +#endif diff --git a/kmap.txt b/kmap.txt new file mode 100644 index 0000000..d6ab59c --- /dev/null +++ b/kmap.txt @@ -0,0 +1,437 @@ + +Allocating common symbols +Common symbol size file + +lmem 0x8 kobj/kmain.o +s_iY 0x4 kobj/vga_terminal.o +g_fat 0x68 kobj/fat.o +disk1 0x8 kobj/kmain.o +s_iX 0x4 kobj/vga_terminal.o + +Memory Configuration + +Name Origin Length Attributes +*default* 0x0000000000000000 0xffffffffffffffff + +Linker script and memory map + + 0x0000001fc0000000 . = 0x1fc0000000 + +.text 0x0000001fc0000000 0x885d + *(.text) + .text 0x0000001fc0000000 0x12 kobj/start.o + 0x0000001fc0000000 _start + .text 0x0000001fc0000012 0xd0a kobj/kmain.o + 0x0000001fc0000012 command_interpreter + 0x0000001fc00009f4 kmain + *fill* 0x0000001fc0000d1c 0x4 + .text 0x0000001fc0000d20 0x5b kobj/x64io.o + 0x0000001fc0000d20 inb + 0x0000001fc0000d25 outb + 0x0000001fc0000d2d inw + 0x0000001fc0000d33 outw + 0x0000001fc0000d3c inl + 0x0000001fc0000d41 outl + 0x0000001fc0000d49 _insw + 0x0000001fc0000d56 _outsw + 0x0000001fc0000d60 _insw256 + 0x0000001fc0000d6f _outsw256 + .text 0x0000001fc0000d7b 0x1441 kobj/stdlib.o + 0x0000001fc0000d7b iprint + 0x0000001fc0000ebd uprint + 0x0000001fc0000fac xprint + 0x0000001fc0001088 fprint + 0x0000001fc00011df iprints + 0x0000001fc0001327 uprints + 0x0000001fc000141c xprints + 0x0000001fc00014fe kprint + 0x0000001fc0001520 ksprintf + 0x0000001fc000183b kprintf + 0x0000001fc0001ac4 kgetch + 0x0000001fc0001b0f kgetc + 0x0000001fc0001b5b kgets + 0x0000001fc0001dde katoi + 0x0000001fc0001e1d katou + 0x0000001fc0001ee3 ksscanf + .text 0x0000001fc00021bc 0x642 kobj/string.o + 0x0000001fc00021bc kstrlen + 0x0000001fc00021ed kstrcpy + 0x0000001fc0002225 kstrncpy + 0x0000001fc000228a kstrchr + 0x0000001fc00022c6 kstrrchr + 0x0000001fc0002323 kstrcmp + 0x0000001fc00023a9 kstrncmp + 0x0000001fc00023eb kstrcasecmp + 0x0000001fc00024f5 ktoupper + 0x0000001fc000251d ktolower + 0x0000001fc0002545 kchrlen + 0x0000001fc000259e kchr2dbcs + 0x0000001fc0002655 kdbcslen + 0x0000001fc0002687 kdbcs2str + .text 0x0000001fc00027fe 0x7bb kobj/vga_terminal.o + 0x0000001fc00027fe vga_terminal_init + 0x0000001fc000290e update_cursor + 0x0000001fc0002915 cls + 0x0000001fc0002ab5 printchar + 0x0000001fc0002cae printbmp + 0x0000001fc0002dd3 shiftscreen + 0x0000001fc0002f00 chg_color + 0x0000001fc0002f20 print + 0x0000001fc0002f7c move_to_next_char + 0x0000001fc0002f83 move_to_next_line + 0x0000001fc0002f8a locate + *fill* 0x0000001fc0002fb9 0x7 + .text 0x0000001fc0002fc0 0x50 kobj/x64stdlib.o + 0x0000001fc0002fc0 kmemcpy + 0x0000001fc0002fd4 kmemcmp + 0x0000001fc0002ff9 kmemzero + .text 0x0000001fc0003010 0x39 kobj/va_list.o + 0x0000001fc0003010 va_start + 0x0000001fc0003026 va_arg + .text 0x0000001fc0003049 0x1c0 kobj/idt.o + 0x0000001fc0003049 idt_set_handler + 0x0000001fc0003163 idt_call_handler + 0x0000001fc00031a9 idt_install + 0x0000001fc0003201 idt_enable_interrupts + *fill* 0x0000001fc0003209 0x7 + .text 0x0000001fc0003210 0x28 kobj/x64idt.o + 0x0000001fc0003210 _idt_install + *fill* 0x0000001fc0003238 0x8 + .text 0x0000001fc0003240 0x780 kobj/x64ints.o + 0x0000001fc0003240 int0_handler + 0x0000001fc000327c int1_handler + 0x0000001fc00032b8 int2_handler + 0x0000001fc00032f4 int3_handler + 0x0000001fc0003330 int4_handler + 0x0000001fc000336c int5_handler + 0x0000001fc00033a8 int6_handler + 0x0000001fc00033e4 int7_handler + 0x0000001fc0003420 int8_handler + 0x0000001fc000345c int9_handler + 0x0000001fc0003498 int10_handler + 0x0000001fc00034d4 int11_handler + 0x0000001fc0003510 int12_handler + 0x0000001fc000354c int13_handler + 0x0000001fc0003588 int14_handler + 0x0000001fc00035c4 int15_handler + 0x0000001fc0003600 int16_handler + 0x0000001fc000363c int17_handler + 0x0000001fc0003678 int18_handler + 0x0000001fc00036b4 int19_handler + 0x0000001fc00036f0 int20_handler + 0x0000001fc000372c int21_handler + 0x0000001fc0003768 int22_handler + 0x0000001fc00037a4 int23_handler + 0x0000001fc00037e0 int24_handler + 0x0000001fc000381c int25_handler + 0x0000001fc0003858 int26_handler + 0x0000001fc0003894 int27_handler + 0x0000001fc00038d0 int28_handler + 0x0000001fc000390c int29_handler + 0x0000001fc0003948 int30_handler + 0x0000001fc0003984 int31_handler + .text 0x0000001fc00039c0 0x1c5 kobj/pic.o + 0x0000001fc00039c0 pic_init + 0x0000001fc0003ab3 pic_set_mask + 0x0000001fc0003b45 pic_send_eoi + .text 0x0000001fc0003b85 0x12e kobj/pit.o + 0x0000001fc0003b85 timer_interrupt + 0x0000001fc0003bcd sleep + 0x0000001fc0003c34 pit_init + .text 0x0000001fc0003cb3 0x462 kobj/exceptions.o + 0x0000001fc0003cba _enter_rescue_mode + 0x0000001fc0003cc1 enter_rescue_mode + 0x0000001fc0003da8 exception0 + 0x0000001fc0003ddb exception3 + 0x0000001fc0003e0e exception6 + 0x0000001fc0003e41 exception7 + 0x0000001fc0003e74 exception8 + 0x0000001fc0003ea7 exception10 + 0x0000001fc0003eda exception11 + 0x0000001fc0003f0d exception12 + 0x0000001fc0003f40 exception13 + 0x0000001fc0003f87 exception14 + 0x0000001fc0003fce install_exceptions + .text 0x0000001fc0004115 0x46e kobj/keyboard.o + 0x0000001fc00041d3 keyboard_interrupt + 0x0000001fc00042a8 keyboard_scan_code + 0x0000001fc00042bb keyboard_ascii + 0x0000001fc00044d0 keyboard_sym + 0x0000001fc00044f8 keyboard_reset_irq1_vars + 0x0000001fc000450c keyboard_enable + 0x0000001fc0004529 keyboard_disable + 0x0000001fc0004546 keyboard_install + .text 0x0000001fc0004583 0x4e3 kobj/paging.o + 0x0000001fc0004583 page_map + 0x0000001fc00047ad page_unmap + 0x0000001fc0004a05 page_v2p + .text 0x0000001fc0004a66 0x225 kobj/multiboot.o + 0x0000001fc0004a66 mbt_scan_memory + .text 0x0000001fc0004c8b 0x217 kobj/lvalloc.o + 0x0000001fc0004c8b lvalloc + 0x0000001fc0004d75 lvalloc_get_next_addr + 0x0000001fc0004dad lvalloc_push + 0x0000001fc0004e04 lvalloc_pop + 0x0000001fc0004e54 lvalloc_init + .text 0x0000001fc0004ea2 0x55f kobj/pci.o + 0x0000001fc0004ea2 pci_read_config_word + 0x0000001fc0004f18 pci_read_config_word_dev + 0x0000001fc0004f6c pci_get_class + 0x0000001fc0004fa6 pci_get_subclass + 0x0000001fc0005071 pci_dump + 0x0000001fc0005354 pci_detect_hardware + 0x0000001fc0005396 pci_find_device + .text 0x0000001fc0005401 0x9fe kobj/ahci.o + 0x0000001fc0005401 ahci_issue_cmd + 0x0000001fc000548f ahci_read_sectors + 0x0000001fc000576c ahci_identify + 0x0000001fc00058f0 port_start + 0x0000001fc0005925 port_stop + 0x0000001fc00059da port_rebase + 0x0000001fc0005a9b ahci_get_sata + 0x0000001fc0005aaf ahci_get_atapi + 0x0000001fc0005ac3 ahci_init + .text 0x0000001fc0005dff 0x589 kobj/disk.o + 0x0000001fc0005e15 disk_get + 0x0000001fc0005e68 disk_available + 0x0000001fc0005ec6 disk_read_ex + 0x0000001fc0005f72 disk_write_ex + 0x0000001fc000601e disk_read + 0x0000001fc00060e7 disk_write + 0x0000001fc000618f disk_setup + 0x0000001fc00062b4 disk_init + .text 0x0000001fc0006388 0xda4 kobj/fat.o + 0x0000001fc0006388 fat_read_cluster + 0x0000001fc0006450 fat_table_read_entry + 0x0000001fc0006517 fat_read_file + 0x0000001fc00065f1 fat_nametofmt38 + 0x0000001fc000671a fat_fmt38toname + 0x0000001fc0006810 fat_is_valid_file + 0x0000001fc0006858 fat_first_file + 0x0000001fc0006ab4 fat_next_file + 0x0000001fc0006d4f fat_find_file + 0x0000001fc0006f01 fat_init + .text 0x0000001fc000712c 0x6cf kobj/heap.o + 0x0000001fc0007180 heap_join + 0x0000001fc0007289 heap_split + 0x0000001fc000731b heap_alloc + 0x0000001fc000747e heap_free + 0x0000001fc00074e4 heap_init + 0x0000001fc00076fc kmalloc + 0x0000001fc0007734 krealloc + 0x0000001fc00077c2 kfree + *fill* 0x0000001fc00077fb 0x5 + .text 0x0000001fc0007800 0x9 kobj/x64utils.o + 0x0000001fc0007800 x64_get_cr2 + 0x0000001fc0007804 x64_rax_n_stop + .text 0x0000001fc0007809 0x36e kobj/file.o + 0x0000001fc00079e8 file_load + *fill* 0x0000001fc0007b77 0x9 + .text 0x0000001fc0007b80 0xb kobj/x64font.o + 0x0000001fc0007b80 x64_get_font + .text 0x0000001fc0007b8b 0x99e kobj/video.o + 0x0000001fc0007b8b video_pixel + 0x0000001fc0007d0c video_char + 0x0000001fc0007ec0 video_rect_zero + 0x0000001fc0007f84 video_line_copy + 0x0000001fc0008027 video_line_zero + 0x0000001fc0008095 video_clear + 0x0000001fc00080d6 video_swap + 0x0000001fc00080dd video_init + .text 0x0000001fc0008529 0x334 kobj/bmp.o + 0x0000001fc0008529 bmp_draw + +.iplt 0x0000001fc0008860 0x0 + .iplt 0x0000001fc0008860 0x0 kobj/start.o + +.rodata 0x0000001fc0009000 0xc9c + *(.rodata) + .rodata 0x0000001fc0009000 0x1e1 kobj/kmain.o + *fill* 0x0000001fc00091e1 0x7 + .rodata 0x0000001fc00091e8 0xc0 kobj/stdlib.o + .rodata 0x0000001fc00092a8 0x7 kobj/string.o + .rodata 0x0000001fc00092af 0xa kobj/vga_terminal.o + *fill* 0x0000001fc00092b9 0x7 + .rodata 0x0000001fc00092c0 0x24 kobj/idt.o + *fill* 0x0000001fc00092e4 0x4 + .rodata 0x0000001fc00092e8 0x180 kobj/exceptions.o + .rodata 0x0000001fc0009468 0x7a kobj/keyboard.o + .rodata 0x0000001fc00094e2 0x1a kobj/multiboot.o + *fill* 0x0000001fc00094fc 0x4 + .rodata 0x0000001fc0009500 0x688 kobj/pci.o + .rodata 0x0000001fc0009b88 0x6b kobj/ahci.o + .rodata 0x0000001fc0009bf3 0x3b kobj/disk.o + .rodata 0x0000001fc0009c2e 0x15 kobj/fat.o + .rodata 0x0000001fc0009c43 0x26 kobj/heap.o + .rodata 0x0000001fc0009c69 0x33 kobj/file.o + +.eh_frame 0x0000001fc0009ca0 0x1388 + .eh_frame 0x0000001fc0009ca0 0x58 kobj/kmain.o + 0x50 (size before relaxing) + .eh_frame 0x0000001fc0009cf8 0x268 kobj/stdlib.o + 0x280 (size before relaxing) + .eh_frame 0x0000001fc0009f60 0x1d0 kobj/string.o + 0x1e0 (size before relaxing) + .eh_frame 0x0000001fc000a130 0x180 kobj/vga_terminal.o + 0x198 (size before relaxing) + .eh_frame 0x0000001fc000a2b0 0x80 kobj/idt.o + 0x98 (size before relaxing) + .eh_frame 0x0000001fc000a330 0x60 kobj/pic.o + 0x78 (size before relaxing) + .eh_frame 0x0000001fc000a390 0x60 kobj/pit.o + 0x78 (size before relaxing) + .eh_frame 0x0000001fc000a3f0 0x1c0 kobj/exceptions.o + 0x1d0 (size before relaxing) + .eh_frame 0x0000001fc000a5b0 0x160 kobj/keyboard.o + 0x178 (size before relaxing) + .eh_frame 0x0000001fc000a710 0x60 kobj/paging.o + 0x78 (size before relaxing) + .eh_frame 0x0000001fc000a770 0x20 kobj/multiboot.o + 0x38 (size before relaxing) + .eh_frame 0x0000001fc000a790 0xa0 kobj/lvalloc.o + 0xb8 (size before relaxing) + .eh_frame 0x0000001fc000a830 0x148 kobj/pci.o + 0x160 (size before relaxing) + .eh_frame 0x0000001fc000a978 0x120 kobj/ahci.o + 0x138 (size before relaxing) + .eh_frame 0x0000001fc000aa98 0x120 kobj/disk.o + 0x138 (size before relaxing) + .eh_frame 0x0000001fc000abb8 0x188 kobj/fat.o + 0x1a0 (size before relaxing) + .eh_frame 0x0000001fc000ad40 0x160 kobj/heap.o + 0x178 (size before relaxing) + .eh_frame 0x0000001fc000aea0 0x40 kobj/file.o + 0x58 (size before relaxing) + .eh_frame 0x0000001fc000aee0 0x128 kobj/video.o + 0x140 (size before relaxing) + .eh_frame 0x0000001fc000b008 0x20 kobj/bmp.o + 0x38 (size before relaxing) + +.rdata 0x0000001fc000b028 0xcbde + .rdata 0x0000001fc000b028 0xcbde kobj/x64font.o + +.rela.dyn 0x0000001fc0017c08 0x0 + .rela.iplt 0x0000001fc0017c08 0x0 kobj/start.o + .rela.text 0x0000001fc0017c08 0x0 kobj/start.o + .rela.data 0x0000001fc0017c08 0x0 kobj/start.o + +.data 0x0000001fc0018000 0x5a0 + *(.data) + .data 0x0000001fc0018000 0x8 kobj/kmain.o + .data 0x0000001fc0018008 0x8 kobj/stdlib.o + .data 0x0000001fc0018010 0x0 kobj/string.o + *fill* 0x0000001fc0018010 0x10 + .data 0x0000001fc0018020 0x60 kobj/vga_terminal.o + .data 0x0000001fc0018080 0x100 kobj/idt.o + .data 0x0000001fc0018180 0xa kobj/x64idt.o + .data 0x0000001fc001818a 0x0 kobj/pic.o + .data 0x0000001fc001818a 0x0 kobj/pit.o + .data 0x0000001fc001818a 0x0 kobj/exceptions.o + *fill* 0x0000001fc001818a 0x16 + .data 0x0000001fc00181a0 0x98 kobj/keyboard.o + .data 0x0000001fc0018238 0x0 kobj/paging.o + .data 0x0000001fc0018238 0x0 kobj/multiboot.o + .data 0x0000001fc0018238 0x0 kobj/lvalloc.o + *fill* 0x0000001fc0018238 0x8 + .data 0x0000001fc0018240 0x360 kobj/pci.o + .data 0x0000001fc00185a0 0x0 kobj/ahci.o + .data 0x0000001fc00185a0 0x0 kobj/disk.o + .data 0x0000001fc00185a0 0x0 kobj/fat.o + .data 0x0000001fc00185a0 0x0 kobj/heap.o + .data 0x0000001fc00185a0 0x0 kobj/file.o + .data 0x0000001fc00185a0 0x0 kobj/video.o + .data 0x0000001fc00185a0 0x0 kobj/bmp.o + +.igot.plt 0x0000001fc00185a0 0x0 + .igot.plt 0x0000001fc00185a0 0x0 kobj/start.o + +.bss 0x0000001fc0019000 0x13200 + *(COMMON) + COMMON 0x0000001fc0019000 0x10 kobj/kmain.o + 0x0000001fc0019000 lmem + 0x0000001fc0019008 disk1 + COMMON 0x0000001fc0019010 0x8 kobj/vga_terminal.o + 0x0000001fc0019010 s_iY + 0x0000001fc0019014 s_iX + *fill* 0x0000001fc0019018 0x8 + COMMON 0x0000001fc0019020 0x68 kobj/fat.o + 0x0000001fc0019020 g_fat + *(.bss) + *fill* 0x0000001fc0019088 0x8 + .bss 0x0000001fc0019090 0x10000 kobj/start.o + .bss 0x0000001fc0029090 0x0 kobj/kmain.o + .bss 0x0000001fc0029090 0x0 kobj/stdlib.o + .bss 0x0000001fc0029090 0x0 kobj/string.o + .bss 0x0000001fc0029090 0xc kobj/vga_terminal.o + *fill* 0x0000001fc002909c 0x4 + .bss 0x0000001fc00290a0 0x1808 kobj/idt.o + .bss 0x0000001fc002a8a8 0x0 kobj/pic.o + .bss 0x0000001fc002a8a8 0x8 kobj/pit.o + .bss 0x0000001fc002a8b0 0x0 kobj/exceptions.o + .bss 0x0000001fc002a8b0 0xc kobj/keyboard.o + .bss 0x0000001fc002a8bc 0x0 kobj/paging.o + .bss 0x0000001fc002a8bc 0x0 kobj/multiboot.o + .bss 0x0000001fc002a8bc 0x0 kobj/lvalloc.o + *fill* 0x0000001fc002a8bc 0x4 + .bss 0x0000001fc002a8c0 0x404 kobj/pci.o + *fill* 0x0000001fc002acc4 0x1c + .bss 0x0000001fc002ace0 0x28 kobj/ahci.o + *fill* 0x0000001fc002ad08 0x2f8 + .bss 0x0000001fc002b000 0x1200 kobj/disk.o + .bss 0x0000001fc002c200 0x0 kobj/fat.o + .bss 0x0000001fc002c200 0x0 kobj/heap.o + .bss 0x0000001fc002c200 0x0 kobj/file.o + .bss 0x0000001fc002c200 0x0 kobj/video.o + .bss 0x0000001fc002c200 0x0 kobj/bmp.o +LOAD kobj/start.o +LOAD kobj/kmain.o +LOAD kobj/x64io.o +LOAD kobj/stdlib.o +LOAD kobj/string.o +LOAD kobj/vga_terminal.o +LOAD kobj/x64stdlib.o +LOAD kobj/va_list.o +LOAD kobj/idt.o +LOAD kobj/x64idt.o +LOAD kobj/x64ints.o +LOAD kobj/pic.o +LOAD kobj/pit.o +LOAD kobj/exceptions.o +LOAD kobj/keyboard.o +LOAD kobj/paging.o +LOAD kobj/multiboot.o +LOAD kobj/lvalloc.o +LOAD kobj/pci.o +LOAD kobj/ahci.o +LOAD kobj/disk.o +LOAD kobj/fat.o +LOAD kobj/heap.o +LOAD kobj/x64utils.o +LOAD kobj/file.o +LOAD kobj/x64font.o +LOAD kobj/video.o +LOAD kobj/bmp.o +OUTPUT(os/lenochka.elf elf64-x86-64) + +.comment 0x0000000000000000 0x11 + .comment 0x0000000000000000 0x11 kobj/kmain.o + 0x12 (size before relaxing) + .comment 0x0000000000000011 0x12 kobj/stdlib.o + .comment 0x0000000000000011 0x12 kobj/string.o + .comment 0x0000000000000011 0x12 kobj/vga_terminal.o + .comment 0x0000000000000011 0x12 kobj/idt.o + .comment 0x0000000000000011 0x12 kobj/pic.o + .comment 0x0000000000000011 0x12 kobj/pit.o + .comment 0x0000000000000011 0x12 kobj/exceptions.o + .comment 0x0000000000000011 0x12 kobj/keyboard.o + .comment 0x0000000000000011 0x12 kobj/paging.o + .comment 0x0000000000000011 0x12 kobj/multiboot.o + .comment 0x0000000000000011 0x12 kobj/lvalloc.o + .comment 0x0000000000000011 0x12 kobj/pci.o + .comment 0x0000000000000011 0x12 kobj/ahci.o + .comment 0x0000000000000011 0x12 kobj/disk.o + .comment 0x0000000000000011 0x12 kobj/fat.o + .comment 0x0000000000000011 0x12 kobj/heap.o + .comment 0x0000000000000011 0x12 kobj/file.o + .comment 0x0000000000000011 0x12 kobj/video.o + .comment 0x0000000000000011 0x12 kobj/bmp.o diff --git a/kobj/ahci.o b/kobj/ahci.o new file mode 100644 index 0000000000000000000000000000000000000000..41ff4f6db72f15112dc095e0a3a0945af804d47d GIT binary patch literal 6280 zcmbtXZ){uD6~E6;TBl2~OX(I?q`q|xbP|mMV&jh}d!=}Nn?~_Kkv3_YaqXAJO8jTG z)3wzq5?oN9OgDen2R2O_-zGE(?E@56p~NXuV)6k+Afb#unyEC&UAmD$KUgTLcg}t1 zJ|DmMwMe^?-@WH|{@io#J?Gr(XQDs+UO>}?YMOXNbSQ-iac);2k+azlHrHoa3(b>oP&~~s9=>}t?j)?3kv4}%qw|)^_ zvKQXFY_BMt2da)GeRu|VFxh(b?YGDq1H4%UZ&plutZv$m*FbdDtO(PNuA@1#VuWDa zgmDx42C|ooNE;fm!xtju%Z>7K|2a9iBJhUXZONkv^CNjM+6q5=)Hzy@A?8PYp)mkQINWZ37Xq!v zoU@-G%XM#H`KGQxP|d+^^f>C(iV+zGj`3WrwAY+RA#5^E%!>{oMEl)0Fzna*CGH0I zs0?m5pj+T8{A55o!R-V#3+PsNKs%%p(5>+$BcRE{?Ao-hI9~4=$4#F&ZaQ(??26+i z#PL&j6|ilshVQn~Phy-YIRJsubZ$ zSRcb@e=F@%#k?*vkJZR>qXVt&m~RHb8P_dYOR&@qiy2w}{-OM7eCisyk(S}FrFERv z!D+}Etdm`ZY+gX7cX=Zx1+j=fD;82EWbHBZ7HUVoDwR;3wG~yMF)BmC#}FJf7?QbO zKGWKB;t z6F1Fnc5JW`-GCRvzw8zH773rlXAMS5#n^WcA3UW2=x$ppeRb_Ft~v%G91E@O+=NA{ zj`q;-jvA&;X^Lo-rcHR=^iDXKvnx%JE>oJ`Ov`Z7RBF`&PM$e0DQ{MyN1ca^qtNFn ztZCJ9bVDnj+1L|){*~+PcFzRs1Ov{|q2v|QRRi9BONdmuIH?z`L`t^`guB4CWrn4yk%tsID!zZ`FF+!8v;&eWrE0l_Qv6MJ&6|9tA%%`&lrt_rj^1pN6 zfn({Cp2?*w&_8nc@I(6kBS*)+rQbht@5m_H!?zSR?evpEI~mb-4{i-r;dJi+41d^u zjh{oeM4k^E-o7PZFM^2VJ&ZWCk0E_sesDE_0;u~_WI{U&_B#A$G{ygwjb8@RJn?dfpBK(F>0Pj`k;MD`d<7_7vft(pJb=0qp05@1v#3 z7y)boe!c8xN&fF7FJlI<(?0UglKk&!D^#9T34g_d|B>)Zgv*!#>}B}%^5?HU_`5#1 zNK7QtBS}$=;{a=dMB?dUaoUO}Gbx9}N)j(x$x^OR6q6Y%bJ{B8#ALpZ&X&eWBV}bv z>G4wnOGq3lNTH;Lxx6S&SytYm3)Znj(GpW95>r#Tq@#S?0+mE5(V>9Ir^#|Q4W^Rm z_;@;-il?j->7*rT=~Xh99Zw&R|1wvQJduae70)E{uwZDzlxx@xO2qjb^uce(ngh)% zzn|g0r>(@$~eo%aO8dDgzeaPH3s4CnH{p!h`lJCrlf z|H%jc55sw!wHc1NtJ>EoKG8nMlRo%)hGUIU?InhD|6ldN-)H#Olo9CH7>?(1EAhTy zI6s$Nba?3h5XoY9fZ^PqhkWoKFdT>9BwIgWIG@*IIJZCTgP&*k?PMFf-!YuqdD(;O zq;tUsU-ZF0^1-h$9EYQ1KS&n^?k8VwnBnNBPV##hj&@>%-@|Zj=ODxRdY|yYGag*c z`+^U?NLhO zN2N|8h6h*o?$aJz-J>%eT-~EDd2n@));zenFB=|Q-HWmS15f#>?nNCpnBnSP6eGn` znNs2y^reE+PpDDBno5k6tdk`%lEOP?4||UPxptXO{o} ztAh!2naYl9(4f(EIw!@TQZ>RHSA8p>DqCW;rj@` zG+flN!ANm85NOk@Z;<|eE(~McL*D~5`o&`nMU?&|609lz74#qsP+!#*h5wo6=edJC zl*Oj{BQ*BTUnBhol%Uk=>>rWhQ5f{v{~y!CZIuMk9M&!6zq&)P7I^m#RYrH=SBM`u oo%{8;({t}oxb+oBB~J@O5`FN_kKxs8{s}4yA3A2-uXq0c0d`ZUmH+?% literal 0 HcmV?d00001 diff --git a/kobj/bmp.o b/kobj/bmp.o new file mode 100644 index 0000000000000000000000000000000000000000..748ebb408831e54057dd0604bcbf5383a4ac5eb7 GIT binary patch literal 2144 zcmbtVO=wd=5Z;$q`{U1xMMcm<^dSE6{Gs3QV;cHPsW*jyUp`81;v5g+5PsLnVp$^$$ftD ze8@1E7K5E()tyEeE7VojF}aMf4XlC1L41J+-=8A{VkTRuR6x8Ol@w(Hw<|vQ$J0`TC9`z zp)`sv()bwUX6V}NRujzeWrihP+=D@6Dn&O6cDw-M6BNHj-cZi)^Cwy@qZM7lOR4q@w2x2fmTZxp)8%uahLQro2oI#7bIx&NjS(|$dwIBWXwxq$}4#ZY4g(N z0NL2Q1mhhBhFku()(ka!G0v) zh0V(_-V(yCd@VL#0E6o4!1%_H&4;nb;zRW*ROpUgmAT)Aw3+@#PdW62p_Z_l5je@G z(@!DC9fFn>8fAqL@%sPVA*-CXnG45SrMmA#X+*sc*fj!xU7!8t^ zFiz(-M@B=fo7RU9huZr|ul4s;IQ$R_)>gLbu`I{1r} zT?4-w@(zgKs5qpatbs=rhmIA+L#&~@sZ64qSwoq$r~C9Oo$OConPfJ@tlmT>!L06~ zA!hXqq*BS7h{@w*U+1-SB9&C`|64`T1LYL#R17f^-3M>yarK(?P8`(z7!JQIs3*~- zK&qL));kowSK+~zl?eihPd@x|2shNfApLLckD@L4q;JeG+P>Kj;#$Yo`mDnK=rLkr z>Ov<1_WrjrnO=XyX%oZw=8tcy~H;lvDhd akj2>#o)S literal 0 HcmV?d00001 diff --git a/kobj/disk.o b/kobj/disk.o new file mode 100644 index 0000000000000000000000000000000000000000..c908fc81d38d871c1ce876f40c2788c46b78d4b9 GIT binary patch literal 7368 zcmeHLU2IfE6rSBh+G3%l3i4-M3I5>E3Pd9a!Nsz6h(Zda2^!^ST5BsnQo-_B%-P60f@?cCf z*=g>bneUwW&dfJ6=Vp5>^z74Kk4Na@5j#btr%@p;uCBC$su>imqDAyb>vx%*Z?;Ou zL*=$}p>lS1*QM_WU4`g8p!3$WJfjJ26fAHXE3Y1DQrO)3Tu)hA1vxddNN&W+CnvPC z^b}+^-|SGf%jr-NjdMYH)^W=96kPWNndF>j9FT%sxGZT+p`XkJ zn`I8h=a6T?!le}|Vpw4=pPcmpEfYoInNz?}k|(-7FoTkWU?cBiuRwFJ7tF7<%EduNnRQ!_2nIuA{d={L7hxTPrOiB_+YB-fo(b@sehPF-6B=OPze zY31d%snmKosZWB^vvPWF{B#EQeeTJ+6dh^;MS0>;2!r#2`QZ*M+&4$`8VmVP&a+(! zjtjxVxNtGH=CH)>RcfiuHBxuvoI38V5lEEH`zMy*RZt%Fy&jkd-qdS4m{bJFd-L!U zw=5)dcAH-xxab?~T@EJI{ZYF}hb9MDw&WXm7w*!yvzhHxr)6?CMq-x|PRHLTCb-d{ zai}z{vSt-wMeF9t(7(qGYeGF6rJ+DWfrbJN1sV!86lf^WP@ti}O%#a6(u3iY5sCT} z8PlKW_xC0;!_oBJON6q#nu?i5m1*~$gU@UhqN}s>3IF|F`+7F|9}jE^Y{F2tQ#{Yn z1Hv=f?pfQ~)I1Kq!PWte50;hq+O@3xZExq&#rwYp58Ji_aVQ7zrS0B*$^pl|fH;&F z@#WZ`bL_7n4&`%vIrdYI{UgMo)U$tUo5dxpo$(i(@mI9`Eye z&|w`w>kx|5GD`5B_QuA27KKNDnL(d~2)iaht~5 zX@u9V?|{n7;;OwQ7oWf%YSqOjnyNuSd}47Gz5$R9;MctBECBW};V~Ma&H%J`5I#+~ z+FNMvfk#iBOsYCi2andlUj`iKlcv4X{G){5MY^an1K1mNcye{{lf*MiJnC!#_A%k( zw3X^i0d^XmTI>3z4vxQ-Yx$#IxUR2g>(!YA?8iF(SL)z@)WKEy2=s|`81u+LB5jIz zZ^}+8eFLd2vFNDXIc%7ABQg?+4Mlo~47-atDQt|2WaO|B9@&xjHKAYdJjC`=#!0m+0~V!}T`-ZC4q-R69fc2%U4}N1iog z+sSaw^CrWWlP^}M8IHM1mkSJ6`qSdBFr3flPlluamlVW9n}_pUrOBaQ!*Fb#Bmest z&iy+Xu9`HT=NaC?_y-w|`aDLq48yV6MLfqC&i-{TE--v8s&a;={oaYsW->FHU_EQ@+i%%E<8s4*Il^&PJH6Rb$-vgaGl?0 zT)58H>Y{^9&r|1XKMKQeoo7WLeI#y1dZ9K`c0Hh5DPt%SFpW`D1frN)0=?<92&58r zr!NtYLzV&n-Hd^7e<~6;>?r^I?FR~+vipl11PqHs`(*cQU){zU&l2uy5FTE-SJ*vC z_X+=ljB#|X(0Afq!pY4Z1n*0(xY|JS>aKVQTFB`h?|l6DWx`QBxj}a`Jjlt<8gw1M z?W$9Gx#MpG6JnbxE~>Si;<&@>@w)D!@$UHDG=8ggBz~=*4)+u^YU%$W34ECxQU4}* z^mwg5rmHIL083Kx*bi-9T+^wo9Sk^5d9XkWyA?2e-0@ogs}=tcCH)fEd2z@83k@6s AoB#j- literal 0 HcmV?d00001 diff --git a/kobj/exceptions.o b/kobj/exceptions.o new file mode 100644 index 0000000000000000000000000000000000000000..505dde46a60a120c9ddbc2897102542804974f67 GIT binary patch literal 5728 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 sH#toTc~IzplM zNewpyA|G7CH)!~48oo)xXEc1Xh9?x?$*+!=6|cQGy?U};m5^YZKUSrJaPQ6{HxnAJ z$6uq~57O7;e|Z)BiiYd?d0f3uLBGc|T=#ok!*#z8;RdEgcJ%jUzlLuU8uHPu;afHQ zhZ_EXhUYX~k7rK9w`=;F)g~z(U4Ng3>+u}b@Q-MA-qdiq3%zzz!*xF2)^L?_vE+`1 zKjaxf|E^k0aq9LXD!D;Crq&W26(t2?25|2^Y7gKZ4_^x4-aT?YfP42yE`WRYMJa%L z^}mh+NAu$J>i@0)?$v)Dz`go^B7l4KeB!vot9L zTh`Hz!(v|odCY?kc~T$Llv>j@g{FNeL9mDfTm>Pe`>?)99-`wpckWGZW_KjufxYM4 z@0@$ix#ymo$%pifk(j0tNg6p$?(ZZ@$Xd^RImN{k=_kD;&D=lOh1U5PAo4bh2b2xM9CaXIeTtVAxm2RLDfEEE-Hc)m~*<}Qg{54SBj8>teWx|8*Jmt|% z{abSEu>C0WAWnTuV{W?5yfnZA7Za>TH#N`%M!MrbEZnkMLt8$Kn@|=`!#>XHbxeiT z=P)eusvB^t;Ho=<>r2k>V32nj)joccyWgS5;M!fYRVwn|NmSp1Bo=p>#7dBaJtWU~ z4!+10gWvCV=!%!|x$hkiMfs?qJ4^rgKF|Nwb^g4y))aGR7nxgKfMU+GI=$NU#XQu# zc@;c?Z8!`RWe7C$%)P;`K}1eG3cDh={*OV~9)XlR`m;-0tTwwq>|Qvy;H6t`!UHJu zLN0BBRg>)A{nro=JT{q2+xik+)0Y}QG!yO$$ag^QU32LcUcwve=PcEuf4Op$w)7F& za_PF4=34hoC=)Nej^@l`Dd6qS5_oi-X|%mc*YUzpZXo!D*{#2PUq9Pdo82P1Gv#B~ z(dMn|Ba;Qw7(7%NG)iUL$d{|7+*5tz1juHoTz!ASD4NBxH3J%pn}L#y4iCR#JUeR zhDxB%cIZFl`asjUqUj#;r{Ad|B;Ix6ARg~#4(Of^9LG~k@xyZ$R&nw`hdlyuvM&PP z+kp=NlITDQIT(RI9f7|Pfgc5Y0P>f4^V$M79AW=@1b#9C&qd%Q4=t6gN*$SN-tmDg5^<{x$eEA>lFA|C0(XL~i$zf~(y}6?{Lp43@JBt}FPQf}@|u zgzj?%SN&+>PYm-^`+HEq)q61oe^`lY2pPkOP#j5xaM|A^S(zz9QvkQEfKN!tG7Fic zZBE-HnakK2l003hkfc=(HraBq2rUEvnwb;hc`H*iMVSB14Df)pP~QNZrf>l&iTek; zz*fr0aUS4wO2JR1^TOdx(MQ-@D9V4U9v8;X2s{*qd=UnOy>KUXgbaa%KEvj_J&*GV zeX4H=+wJ&AaHCK-KF%@3#AjyP@;8wX&QX=*dC5mXiE=ppra1qudKhF`KMB7ELbv)e zVJP#$`s4JM=Vkq|r^B@ah)fH^w{fG8%v(a;a!1{m_+))04&V&Ixe$(zShx7HA-4x7 J*dc}E{|hEp^XmWr literal 0 HcmV?d00001 diff --git a/kobj/heap.o b/kobj/heap.o new file mode 100644 index 0000000000000000000000000000000000000000..37fc81dc712f96e31ef1dbce7d3dd124464a668a GIT binary patch literal 5016 zcmbtXUu;uV7(aIdR-ixu(FsJm1pE_BMG}P}Aw?{l2QWZvAc~f5yMwxRYx;+5i^G{4 ziA^(IG*KUX05!(wlW&LyS2RptwEBQN7*h!*)oQFy_JKIR?>pz*dwSaXfQQ_B&-s0S z&-bt6g~)+@U6#evve<6sofOL0TLEt$rfrz{*-{qeg1dU|{-TA)srI%(rKC#Sz)4Re2%OsBzLxfQ7sJRc@c zov9n_%t}IvVek&bRwFjCTwn|#?o2gUE+DxAPQ~Ic&E?LM?Bjq|c`*t%Ipl+V-MbZd zaR@GnvQJ4_9||6H55*|(1Zum;;v<6fL6?e_n-roA^aAXWEwVY=90*>>SBS;9w@_B$ z&R3R*x$ur+)f}M$MF^rq&S~cA@``v}wQuk(5m2fUiEzO4Xe*@V8hBI&EoJV^_3~16 zu`o|Zr*bz2q~`*bQf)EiiCbk}ssI;A6eHJo5mQh#lM5uOA(4yxopd&?+#e~Q-k})L z&KAKXD**Ei;5x}c$)^F%%fY$k=kw)I9nI@AUl-~_xxPgkLN(|63G67-72&*V` zsFK=xV8hFS*i~*g?M&5K4zE*(7C{H|esORs49aoN>kF!WnRG}*wU-Lk>#%=Rhl$c@ zT*6SBMuGj(0xSdf5*ZY!x#%|1_h6=?B2x={Er$8RAUKzo^V0Q2m`zc75F5t(BbAKT zZFuVAPNZ%b^3xxnll_r;=6y_s+rOmTCFXt&DbRKF%D1sdNw?Y^s*9w2=qKTfGIe#VI?UjwMDD zx!`a-k+g^UmNA5ao6|x3W+#K2^UE09zjyD>;C=g_h~6LE9@-Y#%GhnP7_7-7%o-0^ z8~i;!4F5*J@xiqTUwc*t&UWoxu_Sf{I0S7M;;?SVm!co`=*JO)((6r`7DW3Y<5ZdD>}Wa;Oajv>HRuAC*%=ow@_pe`)i>ct-I}CIE;0}zjmt| zG?@!h$GS8hK_0rF#Lf*+$TdsH3itm@U+v9Lmc_vko;6*fKl6r23cw#IW{;F zJ89=)qxN`Cod+gjL-AZ(9g&<(Oxh$Bdu}W-Dt6g)GLaM8coGze?Qq7HoH%J%@-)$0 z8?pG%P=+N_c8ZOpGl|jMFiXcz+ObqT%|-y7v@>I{5ei2#w%h<^Fg?LWNIN@&cYuZI z#kN#+cUtD##LpQx%Hm3(Ff5b*Zvz)xjNK*c1Nr?5gzxJbzFfmU>VVH{xSqG4HGH+E zr%$#h+ST#h9q?lsj=ikbNey44K=_VpxUT=*4)~`X@T(p0KQtWuSu1Vd)NtLOHL~u_ z`)=!iAJ=fD8%?A%T))?=9qSYm^qkdjoYiW*r{TJvmojy8kV7fY?g&GW8yG4mP*;9KqEH$RBSjCPuaq&|Njnx3Upbf&s7+fyKfDG zyq?Rq0e0AWVHXjbYjSv(H*IpAa3UkX?|`@OP$ M-2dPLA1>4WzYSYyHvj+t literal 0 HcmV?d00001 diff --git a/kobj/idt.o b/kobj/idt.o new file mode 100644 index 0000000000000000000000000000000000000000..cfe8c75f89009b5b2e3e5990c78b13a21254c762 GIT binary patch literal 4960 zcmd^?O-x)>6oBslwo`;MMXI&b`l_vhrW58-3pS>ihD>>js*Me%3oA_F5fEmE%nT75 zjU?EHmq`uoaO2NPle%zYMHdxlqUgemBqr`8F(#OhNLP-r37&J`J@d|;zPobiA@lAz z-#Pc(^X`4`-pAXib7$)!5kV3Wr$t~96~c-IdQz%M(JUIpfaCq{%xziT-;OuE;g!7~ z<_EUsQ=2U}Q(G$=b<`YLT+zr78@RgfmyMrY+|iijl$2*JSRj|8WC* z202PGZalx?cui$agmc}A1PL6kkr}0iRj6RwDW$eszFck=A}YL9uqs{**(eO-t->8_ zu53h)i54ODNUt-u+%Ws&tRLj8Y+8=r3wTt*3TRE=$)dl%t!5_XRpwK7TW${AW#tX8 zJEexQb9K3RD8$oNmiM`{zTjuMC1CP{xe4;@ly5=lMwhYI!X;VVKhV+)|6kkjk>X&% zEe?*Qvm=vk{*;x?S)+N^wG=2EX%wQrukV!A(f`6gr_~d;<6SUWZEC_IS6&j4nOLN~ zX?Ju1UYtX~@rQB{U!*g8W7q2Xns?Rjk9-R;=z9*GAZPJH{<<^hmVIAA4ssDMRsV&m z|4rl|u=IhyPr8wW3YO9!?(Bp)>qFmoA?o2TOzOpb_u$w0_*({E zGVu2e{1XHJ!oY7E_)iA@EAUqKzRNud*5pq^{9h`b;^dwM@vU`!o+0p~$h`{MDDbd# z+-Km2Rh}i4r~1Cb#vC6OxIGusmnU5@o-NXrEQY7^v|%If;zoiSHaEJtae^DqaN{I5 zdbrWcjc2)$&`Z#2NN7bQv?>x>840b9gjPsGt0bY7lF(|gwOVYg7F(;u)@re}T5PQr zTdT#^YO%FiY^|1Vt(I<9i+=2iiK#p+HWb#f;%Zsv-c&xt{N6vnfKB6ww( zo5kk>P|?ljr>BYq`5ZniuXq;Wc^3$sxmB*tmls+5o*-Pj%J^}{bBxRUDi58>)%@xu zc-IjBp@DzKI6r-ltM{Wef4_lG)N++~n(;2hu(`&#yf0Nhe$${}!{a|@oX_(O#uKuq zenEE=L-f8QhY#_psNvjrC}cGi>QNf{1zdhd%^ftg3$IV9r*){ zCmE-2KSU1W`<0H(dBz`P{37EIF+RjN-6Ntg#vfKXHdBlrWPFD4cE)EJKg9Svp{+1Zdl4c_aX9V-{z#HaAx`J)Pz@i#fk0;E)z5)_=-d?X z!W$VlDWNUq{dSDBygQkW7u}hnh)Z=OT}+GkcFP;omZpMb-a)&{2&d1UcY00@naJ-%F*7 z7NKT*OFDxKK09IKkI^Qk665%&){c*RAhLVLS0GA-LJW!}ufYZXFToP2+^R?Q=kEgg zXncx04GQ+}BB0u%sz2ZR&_&Zh?K#D2$M04B7gauLYRB&fN9g>i&3j07#QDR%)SspW z_iQzkiu9W`)&FIU2K5sTojY)rRnj#q4g{AIf3@S|H$m9=iz@I$&BV~WK{qM?0_X(T Ac>n+a literal 0 HcmV?d00001 diff --git a/kobj/keyboard.o b/kobj/keyboard.o new file mode 100644 index 0000000000000000000000000000000000000000..a42325fa125ea092e8104f852c22eb57366fcc17 GIT binary patch literal 5280 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 literal 0 HcmV?d00001 diff --git a/kobj/lvalloc.o b/kobj/lvalloc.o new file mode 100644 index 0000000000000000000000000000000000000000..80b39fdaf2cc0f7c646c247a0bff7db032e5f1d4 GIT binary patch literal 2560 zcmbuB&1(}u6u@WGk3?H-tb#&4L_tYGmRcw+MKrb6PSF-AmLe!|+isg;(u8D{v?z@f zg*6uP2YB%A#bfbgDp=ZsRu3LLc_{`JskhwXdy_ZmcDk#e4`$}g@4b0%=FMc=#eu7r zeVWFkXzV=OnMul6#P86B8evT=z{a?}#g~4Bxc#8Cf}FpSj+Kwx9w_ttFf<&;O5A?O z?KLj^(5te!qw_rD`9crm2JaFtmYTU;MD-E{}w{eQ6_5_)AzUrHHhgu0`6l$EDRU&tLx#pfb6{V|*=# zAp%fWWs|uAvSsYG-6p$$6@h4Mu)n`I6doKIYY%nnoqC77og<`Z3!_ZS2DP?kf1m(s zjswSr@(sJbgTcqX{sWD^t+(JJZ0C@J^k66L8DSRoo5(@Nv6FV+Xl?y{)hOd)_d?q58kkcHvwsNMtAPv?7 z1=Hgbm(oQF@_iD**yrH;9sG$0|Lov+CsMXa!T8QNegq&Y4}0(~4}Q^uFM9B&9{hy| zfA7J+dT^i5{am3cW@siCK_Uv5@AbCA6!V2WlX?mrK@91YH2fW z=oY*%rcW7`!SsnthUt^ZM8cc{Cd_6mI-NEWCWZg+Ap{Yybm}iW0u1G-vp6uPG7B4a zZP4(m5rO8EGJQ&Nv;f~Ss`9NLBj?k^)i2Vxl9$}~k*>> literal 0 HcmV?d00001 diff --git a/kobj/multiboot.o b/kobj/multiboot.o new file mode 100644 index 0000000000000000000000000000000000000000..a5ca2c29f8679894c6c008ecedf840b1ccb055f6 GIT binary patch literal 2296 zcmbu9K~EDw6o6;j3Z)dOgo6=HHYOM~xT#(g4rYN=CPoaBaK;vwKx8SlYXV##DJq+d zvGL@=14n*=Q7-}}fS#%+FD7VWQpH0}Jk(QtZ+C`Hhuw?5WOv^C-rM(P-puS$>c+K@ zq7W_$xk~C5r-W3G)OFoebrL5nWQ^M1XyKi5qO3Z&}jorS8>{@?}L4P~5VOh*gVX!}Y@@+PIwq8s}7xPwqW&NVf7_gwY;Wb@Na_u3;1_&KM$9Abx`I5Eu<=nRKeSr-c%*GQhfJz zw0~I5PcIs3_hgKq(LJwTfLDx=p~1mE_3Y5iv2*HW?UI({X*-#sERGUoKB08Qo1;ZI zm?webgVG&>SO3w(!_Z(`Q&vn2)U{CNQX9l#Sf5fFJkw*z=V;NtE) z6*ylz=3N)K*oWN!{zKrHANLRCkHE$JF+8&%=oa&<2tm-zLR_0@`32KTXJE8)-Z;gz zoH3KuEMwjx+MTqOCR!$+Ct5D+853F4G-ko)h8a`ilex5McuD{NtwIW1gM5N@U?}|D zdX^W>aB7VjpM0XBd}nsL{|o7R+Mn79l-gV9tO2{vyjM zm*e$Mh{af}h2m#N3|zrrL3sZ-8UV$w|Euhh@IGVz z@$bdI=lmEjxp#ob8vFhh8iMe7bA+}$cl4DQjIs|}fnjaAKHeR_`kxp)4}MYP`hNjx CYW4yE literal 0 HcmV?d00001 diff --git a/kobj/paging.o b/kobj/paging.o new file mode 100644 index 0000000000000000000000000000000000000000..2944019744a32f60b056496a5d57944d5b9fe959 GIT binary patch literal 2888 zcmbtUOK1~882&d=(`vQ#aS-%Sk&24M$3;=mNL?L4MU+4fLR~dJz|@kaQU&o*lrFi% zgV1BW)mtt?ytN8eJxIOf7!_e96{4qjir+swv)OKTMRdqyX1@Qq|NqV0Gfy6i83yTL z&>?D_G)gql(b}ivHbpC_gVMtODjqCM0221y31N@k7xvS!X0s^@CXQwmDPTUQmj3-SyJN zUTkv`rjwD8&mgkTrY&-vBiF?Nvy>|$vJ)Pey`b=EXHn!Sm`+7T7K?4#B0C(}LFDON zvH0$_WXkx$FlaIfniS<%wP@h+BESW6M)86hTf|E zBX&kL%-{Aot}yv~Udqkso_~A7GTnwFVg9%ck^uHcG5e{r)f8Fa0*zPWxCf)F5djr` zaMx*q*|%QQj3OT>Ml`xT=vTK_5ledV^7I%o-TlzQO+tEA{sf(Cg%7p1T-hgjlCCmk zyj*chybG`>*9zxa@#k6z&y{KA`BhiR%eBg!s)AEfZmum}tp~3h2py(~eq$QJLJS~b z+-diM;^x}88n_;AP4iv6cllmRh`AYlSKhs*;>ub8TZ`G#rcJb7>1#b% z8(^Ci{!pbPYr^)!*467nSCf}`lNrof!*nB?$-1Y}AwEmNtv$o6O~2$n`i0eB#ls9> z1o4pw{AC3GJp!+Dk3;;YROy3pCnNBM2>ht3OVH1=2)tKjLwxn*R7Xk$aNUOs0bKWi zk|VdXdFvw9e9m33>0K^!!%F5eV|hwmw(=GwFOG~*^3u(0HZufFiZj;+ujH(3M!Em* zr57H!20@0VfbsYeptNe2E5!c>Ojb!@`iG+&b|`~R2>rEY-tyRj$+&70Lvn0xzZwz` z#@_*ydHJvQyJ5>d<>Q1^4;_Dv2GpwK>-8{j-YdF#+WS=gV;tTSH;Fv#g}@*Zt#niBk&3=e)w=msS6{KmHMn F{~N#3MxX!y literal 0 HcmV?d00001 diff --git a/kobj/pci.o b/kobj/pci.o new file mode 100644 index 0000000000000000000000000000000000000000..449e986b0b54d6ff9840f60e178380b77ebd70a6 GIT binary patch literal 9360 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 literal 0 HcmV?d00001 diff --git a/kobj/pic.o b/kobj/pic.o new file mode 100644 index 0000000000000000000000000000000000000000..cb9e25113a0990f8c90be541677636e688c5ecb3 GIT binary patch literal 2192 zcmbuA-D?v;5Wpu%+oW1eEGpG1Tzn7(IsAA~is(r>8$m>bz6mi&uQX^D1`<=`d}aW;mqDnd)?f<=#<@={mty`?(A*)*t~u< z90~zT2rj|)h$%p$ecLvKX~1rX!C=byk*YNlPIb*Guh#dWYhJ@HH7kO!+ibXWN}&_x zT72fcvoN1*ajd$IX~j`*L(mdl4-;*Pr9-sF3fdC8=^HDk8aw&rlRUEKRGUtDsa9=9 z$Ge6X&5dcO6`HZ-4ziOFe`jtui{3IkH`i;`C9sc9n9Vubi1Xp=cc<~E;e3qGnCr;~ z1}q=i>2zJ4u8XAKcBb9l5nV#9x)vQjSl8%8Q`mVo;8JpVDb9z1{{BAg#K4Wg zliGRxtbQ6`KSq&+9^QgbB@ycFipC~!(?^g|BUz#D%HG7YaQ~i;@UI075x$GWQC?BE z<$tl|zfBy)ppN~Igqw)3P`%pVH{D5#M0~$kfC&EiNdzTmWwb@Sg!ZDeFdR zmy97*@o;Y)UI*~m0ItcLVbs)E3~4au`@W-azE{vo4+?fBi`pJ@^$1&I*1e2wTNNAh zp^TjYJzFY)o*OL`tRgbuwnoy!W0`^_)Bm^9FasS~eF+9KlFzap?#PX0n{+QWdR+!K zuPn)@cvH^rL?@Yi2R$;FzI)>8%Wd}-S;mr5wgab-QOiV=VzxCfrcn)~>ZQP>*j>ctBc>^;>U5ot4iq zR$prVWGhR}@%u6MZn`-^p{uh^wsB}TIrVIKH_7VT?8isylMVKMk68`&YOjaYUk4Rg zJ^t&PHWaI>eOccT(`*b;%}rVa$yNfpAh^}or0@T0jho{{(`GD=VJr1d6u%PVX42`& z#EF@!bIHVnecB#FL~^*Tz*@Wx)4aIJ0tmX87%e+?eo~e>dbcGH@a}B6u6xQ z-^rG1CGJ&$7m8lhDUe;QRXF;yj_;Lnj#n;#Kks=JO2L2vheD2{k2`s{l$*!gb}V;_ zu73~8HJ*XajjY;Ry;xiO41f*rlYQxVjg&4X*A5*#3hecQdGYwXO5Ys(SOT&AkN< zcFyH4*csmkJ6kRmy%I9v_VUi1s$2AA`Ttf4tU#Y^zL*p;5?k&^d(@6qHt7*;be<_} zx@^m*oRIl+7sym+sqWQr$<3EvGUipaO?*<;H1jJmP|c_E&G9KYzxp3laVmdU0jbse zN?(-ubpE(?a4>NWIpX5osr5{`$zv@=C@PInEb1|Oao2Sx)q|a expv``FfS7hAf&m?`DtBY^XDaWM6sYV=l=~1Uc3VU literal 0 HcmV?d00001 diff --git a/kobj/start.o b/kobj/start.o new file mode 100644 index 0000000000000000000000000000000000000000..1eadeb4ecb2a2860bc04a5a931263b3786194ab8 GIT binary patch literal 880 zcmbVKy-EW?5S~k-rmzSWVj&_HLYh-wK(0|Ne1~Ks2g>E5+-{+juj51Hfzk?AL5TC+ z&Y0W1vvFYgX1@8|oqfN#zwIRnsU&nwTT5A@Y^#c%(H`|1?Eh5s8uDpX>S?`jnvv3i zyNrkc1|sTF;p`Io{W1|!A&*LO?JT0vQVsVSJwtfkcDuZ~jtXkF#ZjJ3DYqu5nG zH$Esz|I5TZ2K2e<^7lJ`Al|9{(tf|F7QW0eGx4s`>#XM6b>OR|$g4#@zp&0!E;Y6! k)*gz9dw!v!G*1hf)GiIz-J!d$>gT|}f`G%`zc*ff0F==)&j0`b literal 0 HcmV?d00001 diff --git a/kobj/stdlib.o b/kobj/stdlib.o new file mode 100644 index 0000000000000000000000000000000000000000..9bdb835d604432d9f075322e4806bc484454980d GIT binary patch literal 10944 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 h(w%52S!5)naH^R|2lx7;h{THig7(xI5 literal 0 HcmV?d00001 diff --git a/kobj/string.o b/kobj/string.o new file mode 100644 index 0000000000000000000000000000000000000000..39b7dbb1352d66a3c24c74d89e94d447ec2af313 GIT binary patch literal 4456 zcmbtYZERCj7(Tb%2gA8r5M>dfO#lPYR9uX1GNpi5u8AmqEWr-~TWJ}xZcBSBU(OBh zMs{5={8JNu@Iw<5{pF7_jls^5ZJ;6b-(rkZgRx67nF%5N(O94N+;iHyvrdh^$vq#> z`~9BxoGu$Qo_WfrX-tyFo?w-oL>cRDs;t9&8D@>FfpwV9ucm#Y*>nbSGe(g(`5N0O zYUY@cGtchTOs6BKkF())YJSWpUY-&P0VotqC$(_S9P3yx&+devu>hrldDg^wPeC7F zJsNN|e>_*#BS&11?3y!1t_1oQHmpX|j^{Mf9>}p&#+{nry1?VqGSiGzobceBg;C>X zel3NBC|Zr1sXAKc?=)?rKTw0@ePq{{&YsS>1nom+NhOwK2nQU(PnaahYB-GayZ zbzyxC!gQ^h+l*Z5n#cHys53>jfU@Oa1@mI#&Qvv*ZBy3P2|Chz8&`7AWI-Qa!KEul z)H-R^yMh4{bhG=82VmNl0sFG$nqFe6O>0* z(KXwq^x@Bt1`lz594nGSl={W=VgvfcIWk+Fm3Dq`rp>RR&dE*h3%My-jKgAJjH{|QNL8O#wRU1VqA!Pyy2Tu$7&|>sEY-gulD#8l4-^Nn z@G@rbAh9DLXRI$dP0lDs<*{h;o4H z65@4*1GPEd75pIEdSk{9_gU z4_!9fPqXCv_HltApsxrAouNVU4cqTKHMN6;)&tHG544j8DKp^u2ogpwH)tizl20~D z6&o9c%w`glGLcH0PyPe{kl?@U)%U%`4N#23f`4HV|MN2cBf)R+^5Yf%mjwS9%`!fJ zLUScZX(^Ft4f~_Cl*5=`7DZwD!Kp@mSgJ;TR$C2*mHK7yx+ORom#y~1!+ViqE-v@H z2Z7%$-WGi_&XkamB-G<%i#Pc6LJ)f_x8+qJa;PM`xS8#bh(h4r` z;dKR<_ppW%0?9b#ecPSUp=WRisveeNdG7mr7K!Q*1l?gOzzXIwsSZu0+Q3__Pe zR$t&SFru9bL!{?2F|NZ$EfmJ*rG2-#J6TtH&q-I_on|3?pTI@i3Y4+86~B_9`hNfn zviV>2sej3)x5u$9`&WOlRR3*4U;J4`s+=4VzxU1(L+ZJfjWMqH=Mg}_u1P><4z~F#jLfH-stPD&@qU13_c7ZS(n)U{$BP`Lx1IiSs$UUJ4k`>66$G-d`Qigq;RL8k79b7698kUll$He2*z9kB8fpSn2cyvK z_vn1!(fP-t`G|pIpkqK_P*}J}=aIv~9-W^(4nAh~X#U4m%jVI|A|HL&qxrRgNAqC; zk8T%PhUmjE1NBN$D@qvjiZhB!ib@ibfUL?~2o2%G)DfUT?qXs1_#c}xW-KW}1+0*f zK?_ZT2#_y;MZGLkTntS;Lw0IWUTThhSz>%nW^svLVsS15kX>AoSX2UHBo?JZDLsgA IayE(y0Gd-jf&c&j literal 0 HcmV?d00001 diff --git a/kobj/vga_terminal.o b/kobj/vga_terminal.o new file mode 100644 index 0000000000000000000000000000000000000000..3232b74226bf73142a9d04bb2e877af96c7d5a18 GIT binary patch literal 7016 zcmchaYm8gP6@bUPJa+T46G0v&L8c-h<*}sc4+wiD@&_qlBQ-n(Zndg8XYP#W z+_9(pKw?&R9^W~0=FFLgXP-{4zrQ0AVKPP78m3y3GB&tS)f2p$V6#{^OIh9*#|}jq zv)+;ljZ>C4shXA-Q;ixouG*H*tlHR$4#qY^cb(q}d{GPc#}0vq);n@M%b#cYe?uFT z&ERtD`|m98nK;Ut{^6MZ*sE=9;CLn*%R@G5d~jtmXjdQkC&oh*O6s$H6YhHMfHL3s zSSje{d=fG**3xk*B8RA4ig|UfTp#d~(*u>!X%^jg5L~N_)}dBu4c-3mG5@ZycKZ&-%g`(l@n zb(fc_em<*AbXCsR>6!6j7te_?V7Swvb>y3A3GIJyb3-+~*wo#s#g%WNZB1E;YHSmX z^FDm+7-mY+I5o9JwW8xJI(|yEE&F5tnkufbcP6~>O2=mhH%C+xe2i386CzOGG_py7 zmg4{l3m(_z9JV*N<&d-h7_+(XD=csHtmP-q`ic2o@>?}@a3b(>@By!yw4(P5bN> z5`2Bb{zs2agaPW{DSKb%5!f4nZ0|(*@4~kBqf@!m<&93mPlBJSs~LK+P=q{m47VY> zn&Uk1HM!PO88Q#2DBT{h7!J9cE~BkmzHNRwywALuK4nG z8&kiE-_f(OX9XYh8ZmTa&sG-M6^mRq>*}s5Y@Efw@xv6ujkI=7?75EK*;jSWjGO=+ zl&wY~Bt8czzZa!J--iP+v$2%&jz_ry_J2~y?+MwzvuXcDA^%TE{%uqKo{%pM$>UA= zIU&C-BwyZ?PYZb*OX=T3%KydK57NV!NqNTuP5)O5xpDqKB7aiIZ>RQm1mh!Wm$1tf z?5jpQS!dgqBV(QL*DiH}B|XIeM2Nm{kzL2R(uXDH>1M%YTWZ|Fc_)i=Eyfa}?1i!e zM%W_^^R*YUPIjfJg^NzZDd}Wag%zQ-0lvBH>xT40mRk+{0pRmU-1uGxmW2;vp{K_H zwBsYd(T?md&-Grx7l`@tvjA+r!OkBI{AB|_0vyLZ3b#5YepaA-8$RTpiIDO$0PJ6a zzbOL4&knGU;A=OpGY0;-f#cJxogLh;=ud|TOdQ&nx*;yeeOHvJ9$t&v_C)0c5?XugL)d> z5?%2}ftuoNyD+?)*@N5Db|D8&@Sbd^Jy=}1t=}&3S`KXI3nNb2Eu@E>U2ZVT5J6K6 z<^|KiXtJ3+$2%pwp1&Ymo>4?MXss0)R-%2?3vyX6UXBXkr z&*uoI`iBXhPyDPAPS>|X{8Zz-sQv2={4N9EXy7{xe2;;92L30)Y202h@Nom5B%IFo z9N`!$`Cj;va8cz^{jbL3oWgI5xLh!v)Xw#U({XPz@YM#s!N4COoW^I!z()YpSW-=Z>oPB>0c-jm-DPVGd+lM&~;SQ>%yM#8Cn!oVLg@ZE$jA@&atPVK*D;Qui2 z(+2(x;dEYe#rp>5OV7(H!sEox-w{sNx1aDEi2h#)r|b9z;dDR9vG6R4E09}D@H}A1 zc9MZUa7f)zhzJJeaT)vn24=>21pUrnG29j|3ZcS)hzC-&oF5jVJ z8kg@-)>GP@cQgG^y2YRzl(nLh%k;SL?qWUgT+FbZ{!)qc6bnJaF68sh5XiWiGngJI zX7Wzp?N86+U;7+^4VA@JmDg^C998xHeWL#?O<#^L@votRe$hRPGTEQroyhh1uM%tp3Q5`_ z2BLR3ie-OUt`kfje@yg$K`IK{y8rhAZx{c|;!zS8{c#?+l(N5!Ki*k->;SQtP}qVE mk~DYP#tzjNioop>#_|6Jyhrr$yMeVEzbY=B_1b`1ll=hVl25My literal 0 HcmV?d00001 diff --git a/kobj/video.o b/kobj/video.o new file mode 100644 index 0000000000000000000000000000000000000000..22db157cb35d35130c30e599d2a26443f3242287 GIT binary patch literal 6328 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 baJ@!gZT zmUnHAe!j_s{Ku@H`%eO1v?S!eW`6!{&TO4pcRE)Dzlk2$h`Sz9KA?DEBi|iM3Bd>I zbAitv+Cs+_x8jQYDKYFpFQ1=&Ia9j6Z<4q5q)B?w;Ky}&F*b5(AkKsl5bL=%r4ci$ zK8iY0UP>kER__TxfV+0!_b*gz2Tv$|NB>V;RuAy`cn`lJ&K;+g_d|2vWx0^*YI%2? wXC@Z9fTV|&lZA($E1y>otZ|L6Sg-MMpT&m3uO&dq0H~6fyY>nwVTp2g+$EV7P!W2%Cztu$GPSYg?_x zm%55ms6T(!9rVMp@kQS>2Cxt9aC+Ug?5vLw%S6w*+RR;Lc8_TZiw&yY#8~!-aVnmSWlvJsv<+Ulh2qEjQYREFu_J@Wh3|zxTeH9+8*Q!% z%T=BO6pKU1GmN()f5dnM`FF;Lk=L@)Y2*pUCz0P}{37y?j9*7y%{FWIkcSz6jQk4Y z&ydeD{u+5H?zdF9&_1YdxNj|te?@+d@n6Vi7%x`W19|2cuRz|&Hi0$BJ;sB`rx=&W zzc79b`3~6Q_*y^mA;w3M-(q|M`8&ohAg^Q__^Zgf7{7!365|h$KWBUzd4T;7c!B&d z<6<#>STY$+#Kwn`@sv;_yZwRV4_to`^au6+V2?j& z@CSSSL8Cv|=MNlefp~C;35U3Fhz*DMaEK9yIB|#-hj?*`7ngW(i5Hi6afug~cyWmr zmw0iB7ngVm5--7=mxb92%Q-Z7eBn`=o6ojhfU0qREsOu*Z#2A2%`0d;&ruCOui;NM z{I`bh$MuNUJ+0vnHT;`~@5FV7=O5Pa+Zz5}!>e%J;rT-vep$m`YIq5*J3N20hM(2& eCmQ}!!y9lt;&oFReqX~sYxs6tzj*#Z4gUj{cRpnR literal 0 HcmV?d00001 diff --git a/kobj/x64io.o b/kobj/x64io.o new file mode 100644 index 0000000000000000000000000000000000000000..f50ce29fce7b3cd1574fb2a545a7f879fc3a3be4 GIT binary patch literal 928 zcmbV}%Syvg5QZncs2d?Fh@v0`7rHQlmmn@AAW9dC?p>4y5)9@7O{DEgw|ykneFERW z2k=T4g>Ljr^Cz`K+<4$*{{Nd9W|BOdU7VLRjk2TB2~Au^iL8l)wx~*_U-W;HXYrj8 z?T=XEMsQvDS>?-uv3)^*P2_-cx}a3iTj+pCXsD<Ee6~t9=*gRZgsmq+CLe8)E zMz4MKsP{hKIl6Cf?gxv^v3VYs4F_%jGjOA{c=*KMFini0qkcNjNSsbWMtmD5t)yuy z)eX{^da>VMmiMmE*LP9AJpO~znMGyw0=^7hoi3*}@Oi;Ez?THy1YZ|?3%n-y4*0g< z`{1VF$KaOWr{GtD=l0HNg^s`5F%P`RXvP6~p-s_!Vk^;R(N@A|;Zws4<2E&v=D=p} J(1d5D&JVhrWM}{Y literal 0 HcmV?d00001 diff --git a/kobj/x64stdlib.o b/kobj/x64stdlib.o new file mode 100644 index 0000000000000000000000000000000000000000..c5d62ecc0f68a76bbfd40e2532383ea039897b5f GIT binary patch literal 912 zcmb<-^>JfjWMqH=Mg}_u1P><4z~F#jLfH-stPD&@qU13_c7ZS(n)U{$BLdLG1IiTs$UUJ4k`>66$G-d`T{D*0oA|)RL23uAk7jW0th657@Pe9P{DGrDg=RU zzendqkAp9nKYJ_%v6>&Ue_nDJDptbgvAk5^(J!dPvQm~uzhAQ&9{7LYu;GEj9)<@z zIzK}6t_HC{dRHB0&?`x;C}Gem&L}P^DoIQNvMO^SG=z_E3SJh-oh%F=|6^0cj3tGr zffX_`$f9X5hKehri915Ywa~=JfjWMqH=Mg}_u1P><4z~F#jLfH-stPD&@qU13_c7ZS(n)U{$BRJ8-1GLos$UUJ4k`>66$G-d`QiXnVFgqr3y=oc!vW<>Kxs*+IFt*g9H538z(pVo zbo==gE*$pg{PFr9Or2gyYDEcyUU5coNl{5+5|CAy3!x!=m^uP9$Q~AkkN>eLW5yE0 zqCkZLSi}{f;voNH1=*=Zd8s-26=o)-C7C(JdWprk3_wnNdTL30a*+|3U6fc6pBG + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + Copyright (C) + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. \ No newline at end of file diff --git a/lenochka/README.md b/lenochka/README.md new file mode 100644 index 0000000..be8cf93 --- /dev/null +++ b/lenochka/README.md @@ -0,0 +1 @@ +# lenochka diff --git a/lmap.txt b/lmap.txt new file mode 100644 index 0000000..bd838c3 --- /dev/null +++ b/lmap.txt @@ -0,0 +1,254 @@ + +Allocating common symbols +Common symbol size file + +s_iY 0x4 lobj/vga_terminal.o +s_iX 0x4 lobj/vga_terminal.o + +Memory Configuration + +Name Origin Length Attributes +*default* 0x0000000000000000 0xffffffffffffffff + +Linker script and memory map + + 0x0000000000100000 . = 0x100000 + +.text 0x0000000000100000 0x3890 + *(.multiboot) + .multiboot 0x0000000000100000 0x30 lobj/loader.o + *(.text) + .text 0x0000000000100030 0x19 lobj/loader.o + 0x0000000000100030 _start + .text 0x0000000000100049 0xae4 lobj/lmain.o + 0x0000000000100073 page_map + 0x0000000000100281 elf64_load + 0x0000000000100454 identity_map + 0x00000000001004a4 map_loader + 0x000000000010055a gdt64_entry + 0x0000000000100600 gdt64_setup + 0x000000000010067b scan_memory + 0x0000000000100714 init_memory + 0x0000000000100919 lmain + *fill* 0x0000000000100b2d 0x3 + .text 0x0000000000100b30 0x7d lobj/x86io.o + 0x0000000000100b30 inb + 0x0000000000100b36 outb + 0x0000000000100b40 inw + 0x0000000000100b47 outw + 0x0000000000100b52 inl + 0x0000000000100b58 outl + 0x0000000000100b62 _insw + 0x0000000000100b79 _outsw + 0x0000000000100b90 _insw256 + 0x0000000000100ba1 _outsw256 + *fill* 0x0000000000100bad 0x3 + .text 0x0000000000100bb0 0x87 lobj/x86stdlib.o + 0x0000000000100bb0 kmemcpy + 0x0000000000100bd9 kmemcmp + 0x0000000000100c15 kmemzero + *fill* 0x0000000000100c37 0x9 + .text 0x0000000000100c40 0x34 lobj/x86gdt.o + 0x0000000000100c40 _gdt_install + .text 0x0000000000100c74 0xcdc lobj/stdlib.o + 0x0000000000100c74 iprint + 0x0000000000100d62 uprint + 0x0000000000100e10 xprint + 0x0000000000100eb2 lprint + 0x0000000000100f72 iprints + 0x0000000000101062 uprints + 0x0000000000101112 xprints + 0x00000000001011b6 kprint + 0x00000000001011e6 ksprintf + 0x00000000001013d3 kprintf + 0x0000000000101536 kgetch + 0x0000000000101540 kgetc + 0x000000000010154a kgets + 0x0000000000101719 katoi + 0x0000000000101741 katou + 0x00000000001017d4 ksscanf + .text 0x0000000000101950 0x133 lobj/string.o + 0x0000000000101950 kstrlen + 0x0000000000101978 kstrcpy + 0x000000000010199d kstrncpy + 0x00000000001019e4 kstrchr + 0x0000000000101a17 kstrrchr + 0x0000000000101a5e kstrncmp + .text 0x0000000000101a83 0x339 lobj/vga_terminal.o + 0x0000000000101a83 vga_terminal_init + 0x0000000000101a89 update_cursor + 0x0000000000101b08 cls + 0x0000000000101b4f printchar + 0x0000000000101cb9 shiftscreen + 0x0000000000101d52 chg_color + 0x0000000000101d6a print + 0x0000000000101d9a move_to_next_char + 0x0000000000101da0 move_to_next_line + 0x0000000000101da6 locate + .text 0x0000000000101dbc 0x1d7 lobj/gdt.o + 0x0000000000101dbc gdt_create + 0x0000000000101f1e gdt_install + *fill* 0x0000000000101f93 0x6d + .text 0x0000000000102000 0x102b lobj/x86enter64.o + 0x0000000000102000 x86enter64 + .text 0x000000000010302b 0xdd lobj/memory.o + 0x000000000010302b mbt_mmap_init + 0x00000000001030f4 ram_get_map + 0x00000000001030fe ram_get_size + .text 0x0000000000103108 0x1ed lobj/idt.o + 0x0000000000103108 idt_create + 0x00000000001031b0 idt_setup + 0x0000000000103220 idt_irq_by_addr + 0x000000000010325b idt_handler_entry + 0x00000000001032a1 idt_install + 0x00000000001032ee idt_enable_interrupts + .text 0x00000000001032f5 0x2d9 lobj/exceptions.o + 0x00000000001032fb _enter_rescue_mode + 0x0000000000103301 enter_rescue_mode + 0x0000000000103389 exception0 + 0x00000000001033a7 exception1 + 0x00000000001033c5 exception3 + 0x00000000001033e3 exception6 + 0x0000000000103401 exception7 + 0x000000000010341f exception8 + 0x000000000010343d exception10 + 0x000000000010345b exception11 + 0x0000000000103479 exception12 + 0x0000000000103497 exception13 + 0x00000000001034b5 exception14 + 0x00000000001034d3 install_exceptions + *fill* 0x00000000001035ce 0x2 + .text 0x00000000001035d0 0x1f lobj/x86idt.o + 0x00000000001035d0 _idt_install + *fill* 0x00000000001035ef 0x1 + .text 0x00000000001035f0 0x2a0 lobj/x86int.o + 0x00000000001035f0 _int0_handler + 0x0000000000103605 _int1_handler + 0x000000000010361a _int2_handler + 0x000000000010362f _int3_handler + 0x0000000000103644 _int4_handler + 0x0000000000103659 _int5_handler + 0x000000000010366e _int6_handler + 0x0000000000103683 _int7_handler + 0x0000000000103698 _int8_handler + 0x00000000001036ad _int9_handler + 0x00000000001036c2 _int10_handler + 0x00000000001036d7 _int11_handler + 0x00000000001036ec _int12_handler + 0x0000000000103701 _int13_handler + 0x0000000000103716 _int14_handler + 0x000000000010372b _int15_handler + 0x0000000000103740 _int16_handler + 0x0000000000103755 _int17_handler + 0x000000000010376a _int18_handler + 0x000000000010377f _int19_handler + 0x0000000000103794 _int20_handler + 0x00000000001037a9 _int21_handler + 0x00000000001037be _int22_handler + 0x00000000001037d3 _int23_handler + 0x00000000001037e8 _int24_handler + 0x00000000001037fd _int25_handler + 0x0000000000103812 _int26_handler + 0x0000000000103827 _int27_handler + 0x000000000010383c _int28_handler + 0x0000000000103851 _int29_handler + 0x0000000000103866 _int30_handler + 0x000000000010387b _int31_handler + +.iplt 0x0000000000103890 0x0 + .iplt 0x0000000000103890 0x0 lobj/loader.o + +.rodata 0x0000000000104000 0x312 + *(.rodata) + .rodata 0x0000000000104000 0x10e lobj/lmain.o + *fill* 0x000000000010410e 0x2 + .rodata 0x0000000000104110 0x68 lobj/stdlib.o + .rodata 0x0000000000104178 0x18 lobj/idt.o + .rodata 0x0000000000104190 0x182 lobj/exceptions.o + +.eh_frame 0x0000000000104314 0x99c + .eh_frame 0x0000000000104314 0x1b0 lobj/lmain.o + .eh_frame 0x00000000001044c4 0x268 lobj/stdlib.o + 0x280 (size before relaxing) + .eh_frame 0x000000000010472c 0xc0 lobj/string.o + 0xd8 (size before relaxing) + .eh_frame 0x00000000001047ec 0x148 lobj/vga_terminal.o + 0x160 (size before relaxing) + .eh_frame 0x0000000000104934 0x50 lobj/gdt.o + 0x68 (size before relaxing) + .eh_frame 0x0000000000104984 0x60 lobj/memory.o + 0x78 (size before relaxing) + .eh_frame 0x00000000001049e4 0xf0 lobj/idt.o + 0x108 (size before relaxing) + .eh_frame 0x0000000000104ad4 0x1dc lobj/exceptions.o + 0x1f4 (size before relaxing) + +.rel.dyn 0x0000000000104cb0 0x0 + .rel.iplt 0x0000000000104cb0 0x0 lobj/loader.o + .rel.text 0x0000000000104cb0 0x0 lobj/loader.o + +.data 0x0000000000105000 0x1016 + *(.data) + .data 0x0000000000105000 0x0 lobj/lmain.o + .data 0x0000000000105000 0x6 lobj/x86gdt.o + *fill* 0x0000000000105006 0x2 + .data 0x0000000000105008 0x4 lobj/stdlib.o + .data 0x000000000010500c 0x0 lobj/string.o + .data 0x000000000010500c 0x1 lobj/vga_terminal.o + .data 0x000000000010500d 0x0 lobj/gdt.o + *fill* 0x000000000010500d 0xff3 + .data 0x0000000000106000 0xe lobj/x86enter64.o + .data 0x000000000010600e 0x0 lobj/memory.o + .data 0x000000000010600e 0x0 lobj/idt.o + .data 0x000000000010600e 0x0 lobj/exceptions.o + *fill* 0x000000000010600e 0x2 + .data 0x0000000000106010 0x6 lobj/x86idt.o + +.igot.plt 0x0000000000106018 0x0 + .igot.plt 0x0000000000106018 0x0 lobj/loader.o + +.bss 0x0000000000107000 0x8d60 + *(COMMON) + COMMON 0x0000000000107000 0x8 lobj/vga_terminal.o + 0x0000000000107000 s_iY + 0x0000000000107004 s_iX + *(.bss) + *fill* 0x0000000000107008 0x8 + .bss 0x0000000000107010 0x8000 lobj/loader.o + .bss 0x000000000010f010 0x8 lobj/lmain.o + .bss 0x000000000010f018 0x0 lobj/stdlib.o + .bss 0x000000000010f018 0x0 lobj/string.o + .bss 0x000000000010f018 0x0 lobj/vga_terminal.o + .bss 0x000000000010f018 0x18 lobj/gdt.o + *fill* 0x000000000010f030 0x10 + .bss 0x000000000010f040 0x108 lobj/memory.o + *fill* 0x000000000010f148 0x18 + .bss 0x000000000010f160 0xc00 lobj/idt.o + .bss 0x000000000010fd60 0x0 lobj/exceptions.o +LOAD lobj/loader.o +LOAD lobj/lmain.o +LOAD lobj/x86io.o +LOAD lobj/x86stdlib.o +LOAD lobj/x86gdt.o +LOAD lobj/stdlib.o +LOAD lobj/string.o +LOAD lobj/vga_terminal.o +LOAD lobj/gdt.o +LOAD lobj/x86enter64.o +LOAD lobj/memory.o +LOAD lobj/idt.o +LOAD lobj/exceptions.o +LOAD lobj/x86idt.o +LOAD lobj/x86int.o +OUTPUT(os/loader.elf elf32-i386) + +.comment 0x0000000000000000 0x11 + .comment 0x0000000000000000 0x11 lobj/lmain.o + 0x12 (size before relaxing) + .comment 0x0000000000000011 0x12 lobj/stdlib.o + .comment 0x0000000000000011 0x12 lobj/string.o + .comment 0x0000000000000011 0x12 lobj/vga_terminal.o + .comment 0x0000000000000011 0x12 lobj/gdt.o + .comment 0x0000000000000011 0x12 lobj/memory.o + .comment 0x0000000000000011 0x12 lobj/idt.o + .comment 0x0000000000000011 0x12 lobj/exceptions.o diff --git a/loader.ld b/loader.ld new file mode 100644 index 0000000..01a17fa --- /dev/null +++ b/loader.ld @@ -0,0 +1,28 @@ +ENTRY(_start) + +SECTIONS +{ + . = 1M; + + .text BLOCK(4K) : ALIGN(4K) + { + *(.multiboot) + *(.text) + } + + .rodata BLOCK(4K) : ALIGN(4K) + { + *(.rodata) + } + + .data BLOCK(4K) : ALIGN(4K) + { + *(.data) + } + + .bss BLOCK(4K) : ALIGN(4K) + { + *(COMMON) + *(.bss) + } +} diff --git a/loader.sh b/loader.sh new file mode 100644 index 0000000..75443b3 --- /dev/null +++ b/loader.sh @@ -0,0 +1,2 @@ +#!/usr/bin/bash +make loader.elf && make mount && make update && make unmount diff --git a/loader/elf64.h b/loader/elf64.h new file mode 100644 index 0000000..06964b8 --- /dev/null +++ b/loader/elf64.h @@ -0,0 +1,46 @@ +#ifndef __ELF64_H +#define __ELF64_H + +#include "os.h" + +#define ELF64_P_EXEC (1<<0) + +typedef u64 Elf64_Addr; +typedef u64 Elf64_Off; +typedef u16 Elf64_Half; +typedef u32 Elf64_Word; +typedef i32 Elf64_Sword; +typedef u64 Elf64_Xword; +typedef i64 Elf64_Sxword; + +typedef struct +{ + unsigned char e_ident[16]; /* ELF identification */ + Elf64_Half e_type; /* Object file type */ + Elf64_Half e_machine; /* Machine type */ + Elf64_Word e_version; /* Object file version */ + Elf64_Addr e_entry; /* Entry point address */ + Elf64_Off e_phoff; /* Program header offset */ + Elf64_Off e_shoff; /* Section header offset */ + Elf64_Word e_flags; /* Processor-specific flags */ + Elf64_Half e_ehsize; /* ELF header size */ + Elf64_Half e_phentsize; /* Size of program header entry */ + Elf64_Half e_phnum; /* Number of program header entries */ + Elf64_Half e_shentsize; /* Size of section header entry */ + Elf64_Half e_shnum; /* Number of section header entries */ + Elf64_Half e_shstrndx; /* Section name string table index */ +} Elf64_Ehdr; + +typedef struct +{ + Elf64_Word p_type; /* Type of segment */ + Elf64_Word p_flags; /* Segment attributes */ + Elf64_Off p_offset; /* Offset in file */ + Elf64_Addr p_vaddr; /* Virtual address in memory */ + Elf64_Addr p_paddr; /* Reserved */ + Elf64_Xword p_filesz; /* Size of segment in file */ + Elf64_Xword p_memsz; /* Size of segment in memory */ + Elf64_Xword p_align; /* Alignment of segment */ +} Elf64_Phdr; + +#endif diff --git a/loader/exceptions.c b/loader/exceptions.c new file mode 100644 index 0000000..b1ef518 --- /dev/null +++ b/loader/exceptions.c @@ -0,0 +1,135 @@ +#include "exceptions.h" +#include "vga_terminal.h" +#include "stdlib.h" +#include "idt.h" + +/* We need to implement those excpetions: + * 0 Division by zero + * 3 Breakpoint + * 6 Invalid opcode + * 7 Device not available + * 8 Double Fault + * 10 Invalid TSS + * 11 Segment not present + * 12 Stack segment fault + * 13 General protection fault + * 14 Page fault + * + */ + +static void hang() +{ + //x86_print_regs(); + while(1){__asm("nop");} +} + +void _enter_rescue_mode() +{ +} + +void enter_rescue_mode(int skip_check) +{ + if(!skip_check) + { + chg_color(VGA_COLOR_LIGHT_CYAN); + kprintf("Rollback to terminal? (y - yes, n - no): "); + u8 ans = kgetc(); + if(ans == 'y' || skip_check) + { + kputc('\n'); + chg_color(VGA_COLOR_MAGENTA); + _enter_rescue_mode(); + } + chg_color(VGA_COLOR_MAGENTA); + } + else + { + cls(); + kprintf("Terminal reloaded\n"); + _enter_rescue_mode(); + } +} + +void exception0(int idx) +{ + kprintf("[Exception] Division by zero\n"); + hang(); +} + +void exception1(int idx) +{ + kprintf("[Exception] Debug Trap\n"); + hang(); +} + +void exception3(int idx) +{ + kprintf("[Exception] Debug\n"); + hang(); +} + +void exception6(int idx) +{ + kprintf("[Exception] Invalid opcode\n"); + hang(); +} + +void exception7(int idx) +{ + kprintf("[Exception] Device not available\n"); + hang(); +} + +void exception8(int idx) +{ + kprintf("[Exception] Double fault\n"); + hang(); +} + +void exception10(int idx) +{ + kprintf("[Exception] Invalid TSS\n"); + hang(); +} + +void exception11(int idx) +{ + kprintf("[Exception] Segment not present\n"); + hang(); +} + +void exception12(int idx) +{ + kprintf("[Exception] Stack segment fault\n"); + hang(); +} + +void exception13(int idx) +{ + kprintf("[Exception] General protection fault\n"); + hang(); +} + +void exception14(int idx) +{ + kprintf("[Exception] Page fault\n"); + //Do we want to rollback in command interpreter + + hang(); +} + +void install_exceptions() +{ + idt_setup(_int0_handler,exception0,0,IDT_TYPE_TRAP); + idt_setup(_int1_handler,exception1,1,IDT_TYPE_TRAP); + idt_setup(_int3_handler,exception3,3,IDT_TYPE_TRAP); + idt_setup(_int6_handler,exception6,6,IDT_TYPE_TRAP); + idt_setup(_int7_handler,exception7,7,IDT_TYPE_TRAP); + idt_setup(_int8_handler,exception8,8,IDT_TYPE_TRAP); + //idt_setup(_int9_handler,exception9,9,IDT_TYPE_TRAP); + idt_setup(_int10_handler,exception10,10,IDT_TYPE_TRAP); + idt_setup(_int11_handler,exception11,11,IDT_TYPE_TRAP); + idt_setup(_int12_handler,exception12,12,IDT_TYPE_TRAP); + idt_setup(_int13_handler,exception13,13,IDT_TYPE_TRAP); + idt_setup(_int14_handler,exception14,14,IDT_TYPE_TRAP); +} diff --git a/loader/exceptions.h b/loader/exceptions.h new file mode 100644 index 0000000..42f6e49 --- /dev/null +++ b/loader/exceptions.h @@ -0,0 +1,9 @@ +#ifndef __EXCEPTIONS_H +#define __EXCEPTIONS_H + +#include "os.h" + +void enter_rescue_mode(); +void install_exceptions(); + +#endif diff --git a/loader/gdt.c b/loader/gdt.c new file mode 100644 index 0000000..41c73ac --- /dev/null +++ b/loader/gdt.c @@ -0,0 +1,39 @@ +#include "gdt.h" + +static u64 gdt_table[GDT_MAX]; + +u64 gdt_create(u32 base,u32 limit,u32 type) +{ + u64 desc; + u8 access_byte; + u8 flags; + + access_byte = GDT_AB_PR|GDT_AB_S|GDT_AB_RW; + if(type == GDT_CODE) + { + access_byte |= GDT_AB_EX; + } + + flags = GDT_FLAGS_GR|GDT_FLAGS_SZ; + + desc = 0; + desc |= (u64)(limit & 0xFFFF) << 0; + desc |= (u64)(base & 0xFFFF) << 16; + desc |= (u64)((base>>16) & 0xFF) << 32; + desc |= (u64)(access_byte & 0xFF) << 40; + desc |= (u64)((limit>>16) & 0x0F) << 48; + desc |= (u64)(flags & 0x0F) << 52; + desc |= (u64)((base>>24) & 0xFF) << 56; + + return desc; +} + +void gdt_install() +{ + // Protected Mode Flat Model + gdt_table[GDT_NULL] = gdt_create(0,0,0); + gdt_table[GDT_CODE] = gdt_create(0,0x000FFFFF,GDT_CODE); + gdt_table[GDT_DATA] = gdt_create(0,0x000FFFFF,GDT_DATA); + + _gdt_install(gdt_table,sizeof(gdt_table)-1); +} diff --git a/loader/gdt.h b/loader/gdt.h new file mode 100644 index 0000000..40eff92 --- /dev/null +++ b/loader/gdt.h @@ -0,0 +1,30 @@ +#ifndef __GDT_H +#define __GDT_H + +#include "os.h" + +#define GDT_AB_PR (1<<7) +#define GDT_AB_PRIVL (1<<5) +#define GDT_AB_S (1<<4) +#define GDT_AB_EX (1<<3) +#define GDT_AB_DC (1<<2) +#define GDT_AB_RW (1<<1) +#define GDB_AB_AC (1<<0) + +#define GDT_FLAGS_GR (1<<3) +#define GDT_FLAGS_SZ (1<<2) +#define GDT_FLAGS_LONG (1<<1) + +enum { + GDT_NULL = 0, + GDT_CODE, + GDT_DATA, + GDT_MAX, +}; + +u64 gdt_create(u32 base,u32 limit,u32 type); +void gdt_install(); + +extern void _gdt_install(void* gdt,int size); + +#endif diff --git a/loader/idt.c b/loader/idt.c new file mode 100644 index 0000000..939c581 --- /dev/null +++ b/loader/idt.c @@ -0,0 +1,72 @@ +#include "idt.h" +#include "stdlib.h" + +static u64 idt_table[256]; //256 entries lol +static idt_handler idt_handlers[256]; + +u64 idt_create(void* handler,int type) +{ + u64 desc; + u32 addr; + + addr = (u32)handler; + + desc = 0; + desc |= (u64)(addr&0xFFFF) << 0; + desc |= (u64)(OS_CODE_SELECTOR&0xFFFF) << 16; + desc |= (u64)(type&0x0F) << 40; + desc |= (u64)(1) << 47; + desc |= (u64)(addr>>16) << 48; + + return desc; +} + +void idt_setup(void* int_handler,idt_handler handler,int idx,int type) +{ + idt_table[idx] = idt_create(int_handler,type); + idt_handlers[idx] = handler; +} + +static void* idt_get_addr(int i) +{ + return (void*)(((u32)((idt_table[i]>>48)<<16)|(u32)(idt_table[i]&0xFFFF))); +} + +int idt_irq_by_addr(void* addr) +{ + int i; + + for(i = 0; i < 256; i++) + if(idt_get_addr(i) == addr) return i; + + return -1; +} + +void idt_handler_entry(void* addr) +{ + int idx; + + idx = idt_irq_by_addr(addr); + if(idx == -1) + { + kprintf("No IDT entry some INT!\n"); + return; + } + + //Call handler + idt_handlers[idx](idx); +} + +void idt_install() +{ + int i; + + for(i = 0; i < 256; i++) idt_table[i] = 0; + + _idt_install(idt_table,sizeof(idt_table)-1); +} + +void idt_enable_interrupts() +{ + __asm("sti"); +} diff --git a/loader/idt.h b/loader/idt.h new file mode 100644 index 0000000..abfce5f --- /dev/null +++ b/loader/idt.h @@ -0,0 +1,60 @@ +#ifndef __IDT_H +#define __IDT_H + +#include "os.h" + +typedef enum { + IDT_TYPE_TASK = 5, + IDT_TYPE_16_INTERRUPT = 6, + IDT_TYPE_16_TRAP = 7, + IDT_TYPE_INTERRUPT = 14, + IDT_TYPE_TRAP = 15, +} idt_type; + +typedef void (*idt_handler)(int irq); + +u64 idt_create(void* handler,int type); +void idt_setup(void* int_handler,idt_handler handler,int idx,int type); +int idt_irq_by_addr(void* addr); + +void idt_handler_entry(void* addr); + +void idt_install(); +extern void _idt_install(void* idt,int limit); + +void idt_enable_interrupts(); + +extern void _int0_handler(); +extern void _int1_handler(); +extern void _int2_handler(); +extern void _int3_handler(); +extern void _int4_handler(); +extern void _int5_handler(); +extern void _int6_handler(); +extern void _int7_handler(); +extern void _int8_handler(); +extern void _int9_handler(); +extern void _int10_handler(); +extern void _int11_handler(); +extern void _int12_handler(); +extern void _int13_handler(); +extern void _int14_handler(); +extern void _int15_handler(); +extern void _int16_handler(); +extern void _int17_handler(); +extern void _int18_handler(); +extern void _int19_handler(); +extern void _int20_handler(); +extern void _int21_handler(); +extern void _int22_handler(); +extern void _int23_handler(); +extern void _int24_handler(); +extern void _int25_handler(); +extern void _int26_handler(); +extern void _int27_handler(); +extern void _int28_handler(); +extern void _int29_handler(); +extern void _int30_handler(); +extern void _int31_handler(); + +#endif diff --git a/loader/io.h b/loader/io.h new file mode 100644 index 0000000..a412717 --- /dev/null +++ b/loader/io.h @@ -0,0 +1,21 @@ +#ifndef __IO_H +#define __IO_H + +#include "os.h" + +extern u8 inb(u16 port); +extern void outb(u16 port,u8 data); + +extern u16 inw(u16 port); +extern void outw(u16 port,u16 data); + +extern u32 inl(u16 port); +extern void outl(u16 port,u32 data); + +extern void _insw(u16 port,u8* buffer,u32 count); +extern void _outsw(u16 port,u8* buffer,u32 count); + +extern void _insw256(u16 port,u8* buffer); +extern void _outsw256(u16 port,u8* buffer); + +#endif diff --git a/loader/lmain.c b/loader/lmain.c new file mode 100644 index 0000000..8fab84c --- /dev/null +++ b/loader/lmain.c @@ -0,0 +1,311 @@ +#include "multiboot.h" +#include "stdlib.h" +#include "string.h" +#include "io.h" +#include "gdt.h" +#include "idt.h" +#include "exceptions.h" +#include "memory.h" +#include "elf64.h" + +//1 table entry - 4KB, entire table - 2 MB +//1 dir entry - 2 MB, entire directory - 1 GB +//1 pdp entry - 1 GB, entire PDP dir - 512 GB +//1 PML4 entry - 512 GB, entire PML4 dir - 256 TB + +//kernel start 0b0000000000000000 000000000 001111111 000000000 000000000 000000000000 +//0000000000000000000000000001111111000000000000000000000000000000 +//kernel start 0x3FC0000000 + +//1111111111111111111111111111111111000000000000000000000000000000 + +#define OS_VIRT_KERNEL64 0x1FC0000000ULL + +#define PAGE_TABLE_RRESENT (1<<0) +#define PAGE_TABLE_READWRITE (1<<1) +#define PAGE_TABLE_FLAGS PAGE_TABLE_RRESENT|PAGE_TABLE_READWRITE + +#define OS_MAX_MEM_GBS 128 + +typedef struct { + u64 gdt_entry[8]; + + //Paging + u64* p_pml4; //[512] + u32 res1; + u64* p_pdp; //[OS_MAX_MEM_GBS] + u32 res2; + u64* p_dir; //[512*OS_MAX_MEM_GBS] + u32 res3; + u64* p_table; //[512*512*OS_MAX_MEM_GBS] + u32 res4; + + //Loader + u64 elf_ptr; + u64 paging_size; + u64 multiboot; + u64 gdt_limit; + + u64 kernel_phys_base; + u64 kernel_phys_page; + u64 kernel_phys_addr; + u64 kernel_virt_addr; +} __packed lmem_t; + +static lmem_t* lmem;// = (lmem_t*)OS_PHYS_LMEM; + +static u32 base_phys_addr; + +static u32 get_aligned_size(u32 size) +{ + return ((size>>12) + ((size&0xFFF) ? 1 : 0))<<12; +} + +void page_map(u64 virt,u64 phys,u64 flags) +{ + u32 table_idx,dir_idx,pdp_idx; + u64 addr; + + table_idx = (virt>>12) & 0x7FFFFFF; + dir_idx = table_idx>>9; + pdp_idx = dir_idx>>9; + + if(!(lmem->p_pdp[pdp_idx] & 3)) + { + addr = (u64)((u32)&lmem->p_dir[dir_idx]); + //kprintf("addr %l\n",&addr); + lmem->p_pdp[pdp_idx] = (addr&0xFFFFFFFFFFFFF000)|3; + } + + if(!(lmem->p_dir[dir_idx] & 3)) + { + addr = (u64)((u32)&lmem->p_table[table_idx]); + lmem->p_dir[dir_idx] = (addr&0xFFFFFFFFFFFFF000)|3; + } + + lmem->p_table[table_idx] = (phys&0xFFFFFFFFFFFFF000)|flags; +} + +void elf64_load(u32 base,u32 start,u32 end) +{ + u32 kernel_phys_addr = base; + //At this point we need write 64 bit kernel + Elf64_Ehdr* elf = (Elf64_Ehdr*)start; + Elf64_Phdr* ph = (Elf64_Phdr*)((u8*)start+elf->e_phoff); + lmem->elf_ptr = start; + + //Actually, out align will be always 4KB + kprintf("ELF entry %l\n",&elf->e_entry); + kprintf("Loading kernel at %x\n",kernel_phys_addr); + for(u32 i = 0; i < elf->e_phnum; i++) + { + u32 size = get_aligned_size((u32)ph->p_memsz); + u32 pflags = (ph->p_flags & ELF64_P_EXEC) ? PAGE_TABLE_RRESENT + : (PAGE_TABLE_RRESENT|PAGE_TABLE_READWRITE); + + kprintf("%l %l %l %l %u %u\n",&ph->p_vaddr,&ph->p_offset, + &ph->p_memsz,&ph->p_align,ph->p_type,ph->p_flags); + kmemzero((void*)kernel_phys_addr,size); + if(ph->p_type == 1) //PT_LOAD + { + kmemcpy((void*)kernel_phys_addr,(const void*) + (u32)(start+ph->p_offset),(u32)ph->p_filesz); + + //Map + for(u32 i = 0; i < size>>12; i++) + { + page_map(ph->p_vaddr+(u64)(i<<12), + (u64)kernel_phys_addr+(u64)(i<<12),pflags); + } + + kernel_phys_addr += size; + } + + ph++; + } +} + +void identity_map() +{ + u64 addr = 0; + for(u32 i = 0; i < 1024; i++) + { + page_map(addr,addr,PAGE_TABLE_RRESENT|PAGE_TABLE_READWRITE); + addr += 4096; + } +} + +/* +void map_kernel(u32 base,u32 size) +{ + u64 kernel_base = lmem->kernel_virt_addr; + u64 kernel_phys = (u64)base; + + kprintf("map_kernel %x %u\n",base,size); + for(u32 i = 0; i < (size>>12); i++) + { + page_map(kernel_base,kernel_phys); + kernel_base += 0x1000; + kernel_phys += 0x1000; + } +} +*/ + +void map_loader() +{ + page_map(lmem->kernel_phys_base,lmem->kernel_phys_base, + PAGE_TABLE_RRESENT|PAGE_TABLE_READWRITE); + u32 phys = lmem->kernel_phys_page; + for(u32 i = 0; i < (lmem->paging_size>>12); i++) + { + page_map(phys,phys,PAGE_TABLE_RRESENT|PAGE_TABLE_READWRITE); + phys += 0x1000; + } +} + +u64 gdt64_entry(u32 base,u32 limit,int is_code) +{ + u32 low,high; + u8 access_byte; + u8 flags; + + access_byte = GDT_AB_PR|GDT_AB_S|GDT_AB_RW; + if(is_code) access_byte |= GDT_AB_EX; + + flags = GDT_FLAGS_GR|GDT_FLAGS_LONG; + + low = ((base&0xFFFF)<<16)|(limit&0xFFFF); + high = (base>>16)&0xFF; + high |= (access_byte&0xFF)<<8; + high |= ((limit>>16)&0x0F)<<16; + high |= (flags&0x0F)<<20; + high |= ((base>>24)&0xFF)<<24; + + return ((u64)high<<32)|(u64)low; +} + +void gdt64_setup() +{ + lmem->gdt_entry[0] = 0; + lmem->gdt_entry[1] = gdt64_entry(0,0xFFFFFFFF,1); + lmem->gdt_entry[2] = gdt64_entry(0,0xFFFFFFFF,0); + + kprintf("CS %l DS %l\n",&lmem->gdt_entry[1],&lmem->gdt_entry[2]); +} + +void scan_memory(multiboot_hdr_t* hdr) +{ + mbt_mmap_init(hdr); + ram_map_t* map = ram_get_map(); + u32 i; + + for(i = 0; i < map->ram_pool_count; i++) + { + ram_pool_t* pool = &map->ram_pools[i]; + //We need at least 280 Megs + kprintf("scan_memory %x\t%x\n",pool->start,pool->end); + if((pool->end - pool->start) >= (280*1024*1024) + && pool->start != 0) + { + // Add space so we don't override loader + base_phys_addr = pool->start + 1048576UL; + break; + } + } +} + +// Initializes memory pointers +void init_memory() +{ + lmem = (lmem_t*)((u32)base_phys_addr); + kmemzero((void*)((u32)base_phys_addr),0x1000); + + //lmem->kernel_phys_page = (u64)(base_phys_addr + 0x1000); + lmem->kernel_phys_base = (u64)base_phys_addr; + lmem->kernel_phys_page = lmem->kernel_phys_base + 0x1000ULL; + lmem->kernel_virt_addr = OS_VIRT_KERNEL64; + + lmem->p_pml4 = (u64*)((u32)lmem->kernel_phys_page); + lmem->p_pdp = (u64*)((u8*)lmem->p_pml4 + + get_aligned_size(512*sizeof(u64))); + lmem->p_dir = (u64*)((u8*)lmem->p_pdp + + get_aligned_size(OS_MAX_MEM_GBS*sizeof(u64))); + lmem->p_table = (u64*)((u8*)lmem->p_dir + + get_aligned_size(512*OS_MAX_MEM_GBS*sizeof(u64))); + //kprintf("%x %x %x %x\n",lmem->p_pml4,lmem->p_pdp, + // lmem->p_dir,lmem->p_table); + + lmem->paging_size = ((u64)((u32)lmem->p_table) + - (u64)((u32)lmem->p_pml4)) + + (u64)(512*512*OS_MAX_MEM_GBS*sizeof(u64)); + kmemzero((void*)((u32)lmem->kernel_phys_page),lmem->paging_size); + + lmem->p_pml4[0] = (((u64)((u32)&lmem->p_pdp[0]))&0xFFFFFFFFFF000)|3; + //kprintf("page->pml4[0] %x\n",&lmem->p_pml4[0]); + + lmem->kernel_phys_addr = lmem->kernel_phys_page + + get_aligned_size(lmem->paging_size) + 0x1000ULL; +} + +extern void x86enter64(u32 base); + +void lmain(multiboot_hdr_t* hdr,u32 magic) +{ + outb(0x21,0xFF); + outb(0xA1,0xFF); + + gdt_install(); + idt_install(); + + chg_color(VGA_COLOR_MAGENTA); + kprintf("PM32 LENOCHKA LOADER\n"); + kprintf("hdr %p magic %x\n",hdr,magic); + + scan_memory(hdr); + init_memory(); + lmem->multiboot = (u64)hdr; + + install_exceptions(); + //idt_enable_interrupts(); + + multiboot_module_t* mod = (multiboot_module_t*)hdr->mods_addr; + for(u32 i = 0; i < hdr->mods_count; i++) + { + kprintf("%s\t%p\t%p\t%s\n",(const char*)mod[i].cmd_line, + mod[i].mod_start,mod[i].mod_end, + mod[i].mod_start); + if(!kstrncmp((const char*)mod[i].cmd_line,"LENOCHKA")) + break; + } + kprintf("\nLENOCHKA MOD %p\n",mod); + kprintf("page tables size %x\n",lmem->paging_size); + + elf64_load((u32)lmem->kernel_phys_addr, + mod->mod_start,mod->mod_end); + identity_map(); + map_loader(); + //map_kernel((u32)lmem->kernel_phys_addr,size); + gdt64_setup(); + + kprintf("entry %l %x\n",&((Elf64_Ehdr*)((u32)lmem->elf_ptr))->e_entry); + + kprintf("base_phys_addr %x\nkernel_phys_page %l\nkernel_phys_addr %l\n", + base_phys_addr,&lmem->kernel_phys_page,&lmem->kernel_phys_addr); + + /*kprintf("lmem->p_pml4 %x\n",lmem->p_pml4); + kprintf("lmem->p_pdp %x\n",lmem->p_pdp); + kprintf("lmem->p_dir %x\n",lmem->p_dir); + kprintf("lmem->p_table %x\n",lmem->p_table); + kprintf("lmem->kernel_phys_base %l\n",&lmem->kernel_phys_base); + kprintf("lmem->kernel_phys_page %l\n",&lmem->kernel_phys_page); + kprintf("lmem->kernel_phys_addr %l\n",&lmem->kernel_phys_addr); + kprintf("lmem->kernel_virt_addr %l\n",&lmem->kernel_virt_addr);*/ + + kprintf("lmem_t %u\n",sizeof(lmem_t)); + + //kprintf("%u\n",(u32)(&((Elf64_Ehdr*)lmem->elf_ptr)->e_entry)-(u32)lmem->elf_ptr); + + //ENTER + //while(1){__asm("hlt");} + x86enter64(base_phys_addr); +} diff --git a/loader/loader.asm b/loader/loader.asm new file mode 100644 index 0000000..16d3ddd --- /dev/null +++ b/loader/loader.asm @@ -0,0 +1,43 @@ +MBALIGN equ 1 << 0 +MEMINFO equ 1 << 1 +MEMVIDEO equ 1 << 2 + +FLAGS equ MBALIGN|MEMINFO|MEMVIDEO +MAGIC equ 0x1BADB002 +CHECKSUM equ -(MAGIC+FLAGS) + +section .multiboot +align 4 + dd MAGIC + dd FLAGS + dd CHECKSUM + times 5 dd 0 + mode_type dd 0 + width dd 0 + height dd 0 + depth dd 0 + +section .bss +align 16 +stack_bottom: +resb 32768 ; 32 KiB +stack_top: + +section .text +global _start:function (_start.end - _start) +_start: + mov esp,stack_bottom + add esp,0x7FFC ; 4 byte align + + push eax + push ebx + + extern lmain + call lmain + add esp,8 + + cli +.hang: + hlt + jmp .hang +.end: diff --git a/loader/memory.c b/loader/memory.c new file mode 100644 index 0000000..8ce0e9d --- /dev/null +++ b/loader/memory.c @@ -0,0 +1,36 @@ +#include "memory.h" + +static ram_map_t s_RAMmap; + +void mbt_mmap_init(multiboot_hdr_t* mbt) +{ + s_RAMmap.ram_total_size = 0; + s_RAMmap.ram_pool_count = 0; + multiboot_mmap_t* mmap = (multiboot_mmap_t*)mbt->mmap_addr; + while((u32)mmap < (u32)mbt->mmap_addr + mbt->mmap_length) + { + if(mmap->type == 1) + { + ram_pool_t* pool; + if(s_RAMmap.ram_pool_count == MAX_RAM_POOLS) + break; + pool = &s_RAMmap.ram_pools[s_RAMmap.ram_pool_count++]; + + pool->start = (u32)mmap->base_addr; + pool->end = pool->start + (u32)mmap->length; + + s_RAMmap.ram_total_size += mmap->length; + } + mmap = (multiboot_mmap_t*)((u32)mmap + mmap->size + 4); + } +} + +ram_map_t* ram_get_map() +{ + return &s_RAMmap; +} + +u32 ram_get_size() +{ + return s_RAMmap.ram_total_size; +} diff --git a/loader/memory.h b/loader/memory.h new file mode 100644 index 0000000..96a67a2 --- /dev/null +++ b/loader/memory.h @@ -0,0 +1,25 @@ +#ifndef __MEMORY_H +#define __MEMORY_H + +#include "os.h" +#include "multiboot.h" + +#define MAX_RAM_POOLS 32 + +typedef struct { + u32 __phys start; + u32 __phys end; +} ram_pool_t; + +typedef struct { + u32 ram_total_size; + u32 ram_pool_count; + ram_pool_t ram_pools[MAX_RAM_POOLS]; +} ram_map_t; + +//It must be called before first 1 MB got unpaged +void mbt_mmap_init(multiboot_hdr_t* mbt); +ram_map_t* ram_get_map(); +u32 ram_get_size(); + +#endif diff --git a/loader/multiboot.h b/loader/multiboot.h new file mode 100644 index 0000000..97979a6 --- /dev/null +++ b/loader/multiboot.h @@ -0,0 +1,66 @@ +#ifndef __MULTIBOOT_H +#define __MULTIBOOT_H + +#include "os.h" + +typedef struct { + u32 flags; + + u32 mem_lower; + u32 mem_upper; + + u32 boot_device; + + u32 cmd_line; + + u32 mods_count; + u32 mods_addr; + + u32 syms[4]; + + u32 mmap_length; + u32 mmap_addr; + + u32 drives_length; + u32 drives_addr; + + u32 config_table; + + u32 boot_loader_name; + + u32 apm_table; + + u32 vbe_control_info; + u32 vbe_mode_info; + u32 vbe_mode; + u32 vbe_interface_seg; + u32 vbe_interface_off; + u32 vbe_interface_len; + + u32 framebuffer_addr; + u32 framebuffer_pitch; + u32 framebuffer_width; + u32 framebuffer_height; + u8 framebuffer_bpp; + u8 color_info[5]; + +} __attribute__((packed)) multiboot_hdr_t; + +#define MBT_MMAP_TYPE_RAM 1 + +typedef struct { + u32 size; + u64 base_addr; + u64 length; + u32 type; +} __packed multiboot_mmap_t; + +typedef struct { + u32 mod_start; + u32 mod_end; + + u32 cmd_line; + u32 pad; +} __packed multiboot_module_t; + +#endif diff --git a/loader/os.h b/loader/os.h new file mode 100644 index 0000000..b27c21c --- /dev/null +++ b/loader/os.h @@ -0,0 +1,36 @@ +#ifndef __OS_H +#define __OS_H + +#define OS_NULL_SELECTOR 0x00 +#define OS_CODE_SELECTOR 0x08 +#define OS_DATA_SELECTOR 0x10 + +#define OS_PHYS_MAPPING 0x00100000 +#define OS_VIRT_MAPPING 0xC0000000 +#define OS_PM86_MEM_SIZE_4K (1024*1024) +#define OS_PHYS_ADDR(virt) (virt-OS_VIRT_MAPPING) + +#define OS_VIDEO_BUFFER 0x000B8000 +#define OS_PROG_MAPPING 0x01000000 + +#define __packed __attribute__((packed)) +#define __align(N) __attribute__((aligned(N))) + +#define __phys +#define __virt + +#define NULL (void*)0 + +typedef unsigned char u8; +typedef unsigned short u16; +typedef unsigned long u32; +typedef unsigned long long u64; + +typedef char i8; +typedef short i16; +typedef long i32; +typedef long long i64; + +typedef unsigned long size_t; + +#endif diff --git a/loader/stdlib.c b/loader/stdlib.c new file mode 100644 index 0000000..433b389 --- /dev/null +++ b/loader/stdlib.c @@ -0,0 +1,419 @@ +#include "stdlib.h" +#include "vga_terminal.h" +//#include "keyboard.h" +#include "string.h" + +void iprint(int number) +{ + //4294967295 + char num[32]; + char* s = num; + int uns = 0; + + if(number < 0) + { + uns = 1; + number *= -1; + } + while(number > 10) + { + *s++ = '0'+(number%10); + number/=10; + } + *s++ = '0'+(number%10); + if(uns) *s++ = '-'; + s--; + while(s >= num) printchar(*s--); +} + +void uprint(u32 number) +{ + //4294967295 + char num[32]; + char* s = num; + while(number > 10) + { + *s++ = '0'+(number%10); + number/=10; + } + *s++ = '0'+(number%10); + s--; + while(s >= num) printchar(*s--); +} + +static char* xnums = "0123456789ABCDEF"; + +void xprint(u32 number) +{ + //FFFFFFFF + char num[16]; + char* s = num; + + while(s-num < 7) + { + *s++ = xnums[(number%16)]; + number/=16; + } + *s++ = xnums[(number%16)]; + *s++ = 'x'; + *s++ = '0'; + s--; + while(s >= num) printchar(*s--); +} + +void lprint(u64 number) +{ + //FFFFFFFFFFFFFFFF + char num[32]; + char* s = num; + + while(s-num < 15) + { + *s++ = xnums[(number%16)]; + number/=16; + } + *s++ = xnums[(number%16)]; + *s++ = 'x'; + *s++ = '0'; + s--; + while(s >= num) printchar(*s--); +} + +void iprints(char* outs,int number) +{ + //4294967295 + char num[32]; + char* s = num; + int uns = 0; + + if(number < 0) + { + uns = 1; + number *= -1; + } + while(number > 10) + { + *s++ = '0'+(number%10); + number/=10; + } + *s++ = '0'+(number%10); + if(uns) *s++ = '-'; + while(s >= num) *outs++ = *--s; + *outs++ = '\0'; +} + +void uprints(char* outs,u32 number) +{ + //4294967295 + char num[32]; + char* s = num; + while(number > 10) + { + *s++ = '0'+(number%10); + number/=10; + } + *s++ = '0'+(number%10); + while(s >= num) *outs++ = *--s; + *outs++ = '\0'; +} + +void xprints(char* outs,u32 number) +{ + //FFFFFFFF + char num[16]; + char* s = num; + + while(s-num < 7) + { + *s++ = xnums[(number%16)]; + number/=16; + } + *s++ = xnums[(number%16)]; + *s++ = 'x'; + *s++ = '0'; + while(s >= num) *outs++ = *--s; + *outs++ = '\0'; +} + +void kprint(char* str) +{ + while(*str) printchar(*str++); +} + +void ksprintf(char* dst,u32 maxLen,const char* fmt,...) +{ + u32* argp; + char* cur,*end,c; + char numbuf[64]; + + argp = ((u32*)&fmt)+1; + cur = dst; + end = dst+maxLen; + while((c = *fmt++) && cur != end) + { + if(c == '%') + { + char* p = numbuf; + c = *fmt++; + if(c == 'd') + { + iprints(numbuf,*(int*)argp++); + while((*cur++ = *p++)) + if(cur == end) break; + cur--; + } + else if(c == 'u') + { + uprints(numbuf,*(int*)argp++); + while((*cur++ = *p++)) + if(cur == end) break; + cur--; + } + else if(c == 'p' || c == 'x') + { + xprints(numbuf,*(u32*)argp++); + while((*cur++ = *p++)) + if(cur == end) break; + cur--; + } + else if(c == 's') + { + const char* str = *(const char**)argp++; + while((*cur++ = *str++)) + if(cur == end) break; + cur--; + } + else if(c == '%') + { + if(cur != end) *cur++ = '%'; + } + } + else + { + if(cur == end) break; + *cur++ = c; + } + } + if(cur == end) + *(end-1) = '\0'; +} + +void kprintf(const char* fmt,...) +{ + u32* argp; + char c; + + argp = ((u32*)&fmt)+1; + while((c = *fmt++)) + { + if(c == '%') + { + c = *fmt++; + switch(c) + { + case 'd': iprint(*(int*)argp++); break; + case 'u': uprint(*(u32*)argp++); break; + case 'p': + case 'x': xprint(*(u32*)argp++); break; + case 'l': lprint(*(u64*)(*(u32*)argp++)); break; + case 'c': printchar((char)(*(u32*)argp++)); break; + case 's': kprint((char*)(*(u32*)argp++)); break; + case '%': printchar('%'); break; + } + } + else printchar(c); + } +} + + +u8 kgetch() +{ + /*u8 key; + while(keyboard_scan_code() == 0) + {__asm("hlt");} + key = keyboard_scan_code(); + keyboard_reset_irq1_vars(); + return key;*/ + return 0; +} + +u8 kgetc() +{ + /*u8 ascii; + while(keyboard_scan_code() == 0) + {__asm("hlt");} + ascii = keyboard_ascii(); + keyboard_reset_irq1_vars(); + return ascii;*/ + return 0; +} + +void kgets(char* buf,size_t max) +{ + u8 ch; + char* ptr,*end; + + ptr = buf; + end = buf + max; + *ptr = '\0'; + while((ch = kgetc()) != '\n') + { + if(ch == '\b') + { + if(ptr != buf) *ptr-- = '\0'; + printchar('\b'); + } + else if(ptr != end-1) + { + *ptr++ = ch; + printchar(ch); + } + } + printchar('\n'); + if(ptr == end) ptr--; + *ptr = '\0'; +} + +//static char* katoi_base = "0123456789ABCDEF"; + +static i32 _katoi(char* str,int base,u32 len) +{ + char* end; + i32 i,pow; + i32 num; + + i = 0; + num = 0; + pow = 1; + end = str+len-1; + while(1) + { + if(*end == '-') + { + num *= -1; + break; + } + else if(*end == 'x') break; + for(i = 0; i < base; i++) + if(*end == xnums[i]) break; + num += i*pow; + pow *= base; + + if(end == str) break; + end--; + } + + return num; +} + +static u32 _katou(char* str,int base,u32 len) +{ + char* end; + u32 i,pow; + u32 num; + + i = 0; + num = 0; + pow = 1; + end = str+len-1; + while(1) + { + if(*end == 'x') break; + for(i = 0; i < base; i++) + if(*end == xnums[i]) break; + num += i*pow; + pow *= base; + + if(end == str) break; + end--; + } + + return num; +} + +i32 katoi(char* str,int base) +{ + return _katoi(str,base,kstrlen(str)); +} + +u32 katou(char* str,int base) +{ + return _katou(str,base,kstrlen(str)); +} + +static u32 _kstrchr_delim(char* buf,u32 base) +{ + u32 i,len; + char c; + + len = 0; + while(*buf) + { + c = *buf; + for(i = 0; i < base; i++) + { + if(c == xnums[i]) break; + } + if(i == base && c != '-') break; + buf++; + len++; + } + return len; +} + +void ksscanf(char* buf,char* fmt,...) +{ + u32* argp; + u32 len,maxLen; + union { + i32* iptr; + u32* uptr; + char* sptr; + } u; + char c,*stk; + + argp = ((u32*)&fmt)+1; + while((c = *fmt)) + { + //kprintf("%c %c\n",c,*buf); + if(c == '%') + { + c = *++fmt; + switch(c) + { + case 'u': + case 'd': + len = _kstrchr_delim(buf,10); + u.iptr = (i32*)(*(u32*)argp++); + *u.iptr = _katoi(buf,10,len); + buf += len; //we decrement because it will +1 + break; + case 'p': + case 'x': + buf += 2; //Skip 0x part + len = _kstrchr_delim(buf,16); + u.iptr = (i32*)(*(u32*)argp++); + *u.iptr = _katoi(buf,16,len); + buf += len; //we decrement because it will +1 + break; + case 's': + stk = kstrchr(buf,*(fmt+1)); + u.sptr = (char*)(*(u32*)argp++); + maxLen = (*(u32*)argp++); + if(!stk) + { + u.sptr[0] = '\0'; + break; + } + len = (u32)stk-(u32)buf; + if(len > maxLen) len = maxLen; + kmemcpy(u.sptr,buf,len); + u.sptr[len] = '\0'; + buf += len; + break; + } + + } else buf++; + fmt++; + } +} diff --git a/loader/stdlib.h b/loader/stdlib.h new file mode 100644 index 0000000..29fec14 --- /dev/null +++ b/loader/stdlib.h @@ -0,0 +1,44 @@ +#ifndef __STDLIB_H +#define __STDLIB_H + +#include "os.h" +#include "vga_terminal.h" + +//stdlib.h + +extern void kmemcpy(void* dst,const void* src,u32 len); +extern int kmemcmp(const void* dst,const void* src,u32 len); +extern void kmemzero(void* dst,u32 len); + +//termlib.h +#define kputc printchar + +void iprint(int number); +void uprint(u32 number); +void xprint(u32 number); + +void iprints(char* str,int number); +void uprints(char* str,u32 number); +void xprints(char* str,u32 number); + +void kprint(char* str); + +void ksprintf(char* dst,u32 maxLen,const char* fmt,...); +void kprintf(const char* fmt,...); + +//termio.h + +u8 kgetch(); //Wait for key scan code +u8 kgetc(); //Wait for ASCII character + +void kgets(char* buf,size_t max); + +i32 katoi(char* str,int base); + +void ksscanf(char* buf,char* fmt,...); + +#define _debug() \ + kprintf("_debug at %s:%u\n",__FILE__,__LINE__); \ + kgetc(); + +#endif diff --git a/loader/string.c b/loader/string.c new file mode 100644 index 0000000..9c439cf --- /dev/null +++ b/loader/string.c @@ -0,0 +1,49 @@ +#include "string.h" +#include "stdlib.h" + +u32 kstrlen(const char* str) +{ + u32 len = 0; + while(*str++) len++; + return len; +} + +void kstrcpy(char* dst,const char* src) +{ + while((*dst++ = *src++)){} +} + +void kstrncpy(char* dst,const char* src,u32 maxLen) +{ + maxLen=-1; + while((*dst++ = *src++) && --maxLen){} + if(!maxLen) dst[maxLen] = '\0'; +} + +char* kstrchr(char* src,char chr) +{ + while(*src) + { + if(*src == chr) return src; + src++; + } + return NULL; +} + +char* kstrrchr(char* src,char chr) +{ + char* ptr; + + ptr = src+kstrlen(src)-1; + while(ptr != src) + { + if(*ptr == chr) return ptr; + ptr--; + } + return NULL; +} + +int kstrncmp(const char* haystack,char* needle) +{ + return kmemcmp(haystack,needle,kstrlen(needle)); +} diff --git a/loader/string.h b/loader/string.h new file mode 100644 index 0000000..25af14f --- /dev/null +++ b/loader/string.h @@ -0,0 +1,16 @@ +#ifndef __STRING_H +#define __STRING_H + +#include "os.h" + +u32 kstrlen(const char* str); + +void kstrcpy(char* dst,const char* src); +void kstrncpy(char* dst,const char* src,u32 maxLen); + +char* kstrchr(char* src,char chr); +char* kstrrchr(char* src,char chr); + +int kstrncmp(const char* haystack,char* needle); + +#endif diff --git a/loader/vga_terminal.c b/loader/vga_terminal.c new file mode 100644 index 0000000..fe23ab2 --- /dev/null +++ b/loader/vga_terminal.c @@ -0,0 +1,107 @@ +#include "vga_terminal.h" +#include "os.h" +#include "io.h" + +static u8 s_cCurAttr = DEFAULT_COLOR; +u32 s_iX; +u32 s_iY; + +void vga_terminal_init() +{ + //Map 0xB8000 to 0xC100B8000 + //page_map(OS_VIDEO_BUFFER,0x000B8000,80*25,PAGE_TABLE_READWRITE); + +} + +void update_cursor() +{ + u16 pos; + pos = s_iY * 80 + s_iX; + + outb(0x3D4, 0x0F); + outb(0x3D5, (u8) (pos & 0xFF)); + outb(0x3D4, 0x0E); + outb(0x3D5, (u8) ((pos >> 8) & 0xFF)); +} + +void cls() +{ + u32 i; + for(i = 0; i < SCR_CHARS*SCR_LINES; i++) + SCR_TEXT_BUF[i] = SCR_ENTRY(0,DEFAULT_COLOR); + s_iX = s_iY = 0; + update_cursor(); +} + +void shiftscreen(); + +void printchar(unsigned char c) +{ + if(c == '\n' || c == '\r' || c == '\t' || c == '\b') // Control characters + { + if(c == '\r') s_iX = 0; + else if(c == '\n') s_iX = SCR_CHARS; + else if(c == '\t') s_iX = (s_iX + 8) & ~7; + else if(c == '\b') + { + if(s_iX) s_iX--; + else if(s_iY) + { + s_iY--; + s_iX = SCR_CHARS-1; + } + //Remove character + SCR_TEXT_BUF[s_iY*SCR_CHARS+s_iX] = SCR_ENTRY(0,s_cCurAttr); + } + } + else // Text characters + SCR_TEXT_BUF[s_iY*SCR_CHARS+s_iX++] = SCR_ENTRY(c,s_cCurAttr); + + if(s_iX > SCR_CHARS-1) + { + s_iX = 0; + if(s_iY < SCR_LINES-1) + s_iY++; + else shiftscreen(); + } + + update_cursor(); +} + +void shiftscreen() +{ + //cls(); + u32 x,y; + for(y = 1; y < SCR_LINES; y++) + { + for(x = 0; x < SCR_CHARS; x++) + { + SCR_TEXT_BUF[(y-1)*SCR_CHARS+x] + = SCR_TEXT_BUF[y*SCR_CHARS+x]; + } + } + + for(x = 0; x < SCR_CHARS; x++) + { + SCR_TEXT_BUF[(SCR_LINES-1)*SCR_CHARS+x] + = SCR_ENTRY(0,DEFAULT_COLOR); + } +} + +void chg_color(u8 color) +{ + s_cCurAttr = color; +} + +void print(const char* str) +{ + while(*str) printchar(*str++); +} + +void move_to_next_char(){} +void move_to_next_line(){} +void locate(int h, int w) +{ + s_iX = w; + s_iY = h; +} diff --git a/loader/vga_terminal.h b/loader/vga_terminal.h new file mode 100644 index 0000000..58267f2 --- /dev/null +++ b/loader/vga_terminal.h @@ -0,0 +1,67 @@ +#ifndef __VGA_TERMINAL_H +#define __VGA_TERMINAL_H + +#include "os.h" + +#define SCR_CHARS 80 +#define SCR_LINES 25 +//#define SCR_TEXT_BUF ((u16*)0xB8000) +#define SCR_TEXT_BUF ((u16*)OS_VIDEO_BUFFER) +#define SCR_ENTRY(ch,col) ((col<<8)|ch) + +#define BLACK 0 +#define BLUE 1 +#define GREEN 2 +#define CYAN 2 +#define RED 4 +#define GRAY 8 +#define WHITE 15 +#define MAGENTA 13 + +#define BG_BLACK (0<<4) +#define BG_BLUE (1<<4) +#define BG_GREEN (2<<4) +#define BG_RED (4<<4) +#define BG_GRAY (8<<4) +#define BG_WHITE (15<<4) + +#define DEFAULT_COLOR BG_BLACK|7 + +enum vga_color { + VGA_COLOR_BLACK = 0, + VGA_COLOR_BLUE = 1, + VGA_COLOR_GREEN = 2, + VGA_COLOR_CYAN = 3, + VGA_COLOR_RED = 4, + VGA_COLOR_MAGENTA = 5, + VGA_COLOR_BROWN = 6, + VGA_COLOR_LIGHT_GREY = 7, + VGA_COLOR_DARK_GREY = 8, + VGA_COLOR_LIGHT_BLUE = 9, + VGA_COLOR_LIGHT_GREEN = 10, + VGA_COLOR_LIGHT_CYAN = 11, + VGA_COLOR_LIGHT_RED = 12, + VGA_COLOR_LIGHT_MAGENTA = 13, + VGA_COLOR_LIGHT_BROWN = 14, + VGA_COLOR_WHITE = 15, +}; + +static inline u8 vga_entry_color(enum vga_color fg, enum vga_color bg) { + return fg | bg << 4; +} + +static inline u16 vga_entry(unsigned char uc, u8 color) { + return (u16) uc | (u16) color << 8; +} + +void vga_terminal_init(); + +void cls(); +void shiftscreen(); +void printchar(unsigned char c); +void chg_color(u8 color); +void print(const char* str); +void locate(int h, int w); + + +#endif diff --git a/loader/x86debug.asm b/loader/x86debug.asm new file mode 100644 index 0000000..e4416dc --- /dev/null +++ b/loader/x86debug.asm @@ -0,0 +1,12 @@ +section .text +global x86set_wr_breakpoint + +x86set_wr_breakpoint: + mov eax,[esp+4] + ; Setup debug registers + mov dr0,eax + ;10 01 00000000000000 10 + mov eax,11010000000000000010b + mov dr7,eax ; 1st global breakpoint + + ret diff --git a/loader/x86enter64.asm b/loader/x86enter64.asm new file mode 100644 index 0000000..794fccf --- /dev/null +++ b/loader/x86enter64.asm @@ -0,0 +1,75 @@ +extern gdt_ptr + +section .data +align 4096 +gdt_limit dw 64 +gdt_base dd 0 + +base_phys dq 0 + +section .text +global x86enter64 + +x86enter64: + ; [esp+4] - base phys addr + mov ebx,[esp+4] + mov dword [base_phys],ebx + xor eax,eax + mov dword [base_phys+4],eax + + ;cli + ; Disable paging + mov eax,cr0 + and eax,0x7FFFFFFF + mov cr0,eax + ; Enable PAE + mov eax,cr4 + or eax,(1<<5) + mov cr4,eax + ; Setup CR3 + mov eax,dword [base_phys] + add eax,0x1000 + mov cr3,eax + ; Enter Long Mode + mov ecx,0xC0000080 + rdmsr + or eax,(1<<8) + wrmsr + ; Enable paging + mov eax,cr0 + or eax,0x80000000 + mov cr0,eax + ; Enable Write-Protect + mov eax,cr0 + or eax,(1<<16) + mov cr0,eax + ; Setup GDT + mov eax,dword [base_phys] + mov dword [gdt_base],eax + + lgdt [gdt_limit] + ; Jump! + + jmp 0x08:_kernel_64 + + ;db 0xEA + ;dd _kernel_64 + ;dw 8 +use64 +align 4096 +_kernel_64: + mov ax,0x10 + mov ds,ax + mov ss,ax + mov es,ax + mov fs,ax + mov gs,ax + + mov rax,base_phys + mov rax,qword [rax] + mov rdi,rax + add rax,96 + mov rax,qword [rax] ; ELF ptr + mov rax,qword [rax+24] + + jmp rax diff --git a/loader/x86gdt.asm b/loader/x86gdt.asm new file mode 100644 index 0000000..05c98fc --- /dev/null +++ b/loader/x86gdt.asm @@ -0,0 +1,36 @@ +section .text +global _gdt_install +_gdt_install: + push ebp + mov ebp,esp + + ; [ebp+0x08] = GDT table ptr + ; [ebp+0x0C] = GDT limit + mov eax,dword [ebp+0x08] + mov dword [gdt_base],eax + mov eax,dword [ebp+0x0C] + mov word [gdt_limit],ax + + lgdt [x86gdt] + ; 0x00 - NULL desc + ; 0x08 - CODE desc + ; 0x10 - DATA desc + + ; Reloads segments + jmp 0x08:reload_cs +reload_cs: + mov ax,0x10 + mov ds,ax + mov es,ax + mov ss,ax + mov gs,ax + mov fs,ax + + mov esp,ebp + pop ebp + ret + +section .data +x86gdt: + gdt_limit dw 0 + gdt_base dd 0 diff --git a/loader/x86idt.asm b/loader/x86idt.asm new file mode 100644 index 0000000..bf873d7 --- /dev/null +++ b/loader/x86idt.asm @@ -0,0 +1,23 @@ +section .text +global _idt_install +_idt_install: + push ebp + mov ebp,esp + + ; [ebp+0x08] = base + ; [ebp+0x0C] = limit + mov eax,dword [ebp+0x08] + mov dword [idt_base],eax + mov eax,dword [ebp+0x0C] + mov word [idt_limit],ax + + lidt [idt_desc] + + mov esp,ebp + pop ebp + ret + +section .data +idt_desc: + idt_limit dw 0 + idt_base dd 0 diff --git a/loader/x86int.asm b/loader/x86int.asm new file mode 100644 index 0000000..90de371 --- /dev/null +++ b/loader/x86int.asm @@ -0,0 +1,483 @@ +section .text + +global _int0_handler +global _int1_handler +global _int2_handler +global _int3_handler +global _int4_handler +global _int5_handler +global _int6_handler +global _int7_handler +global _int8_handler +global _int9_handler +global _int10_handler +global _int11_handler +global _int12_handler +global _int13_handler +global _int14_handler +global _int15_handler +global _int16_handler +global _int17_handler +global _int18_handler +global _int19_handler +global _int20_handler +global _int21_handler +global _int22_handler +global _int23_handler +global _int24_handler +global _int25_handler +global _int26_handler +global _int27_handler +global _int28_handler +global _int29_handler +global _int30_handler +global _int31_handler +extern idt_handler_entry + +_int0_handler: + pushad + call near .fun1 +.fun1: + pop eax + sub eax,6 ; call instruction size + + push eax + call idt_handler_entry + add esp,4 + + popad + iretd + +_int1_handler: + pushad + call near .fun1 +.fun1: + pop eax + sub eax,6 ; call instruction size + + push eax + call idt_handler_entry + add esp,4 + + popad + iretd + +_int2_handler: + pushad + call near .fun1 +.fun1: + pop eax + sub eax,6 ; call instruction size + + push eax + call idt_handler_entry + add esp,4 + + popad + iretd + +_int3_handler: + pushad + call near .fun1 +.fun1: + pop eax + sub eax,6 ; call instruction size + + push eax + call idt_handler_entry + add esp,4 + + popad + iretd + +_int4_handler: + pushad + call near .fun1 +.fun1: + pop eax + sub eax,6 ; call instruction size + + push eax + call idt_handler_entry + add esp,4 + + popad + iretd + +_int5_handler: + pushad + call near .fun1 +.fun1: + pop eax + sub eax,6 ; call instruction size + + push eax + call idt_handler_entry + add esp,4 + + popad + iretd + +_int6_handler: + pushad + call near .fun1 +.fun1: + pop eax + sub eax,6 ; call instruction size + + push eax + call idt_handler_entry + add esp,4 + + popad + iretd + +_int7_handler: + pushad + call near .fun1 +.fun1: + pop eax + sub eax,6 ; call instruction size + + push eax + call idt_handler_entry + add esp,4 + + popad + iretd + +_int8_handler: + pushad + call near .fun1 +.fun1: + pop eax + sub eax,6 ; call instruction size + + push eax + call idt_handler_entry + add esp,4 + + popad + iretd + +_int9_handler: + pushad + call near .fun1 +.fun1: + pop eax + sub eax,6 ; call instruction size + + push eax + call idt_handler_entry + add esp,4 + + popad + iretd + +_int10_handler: + pushad + call near .fun1 +.fun1: + pop eax + sub eax,6 ; call instruction size + + push eax + call idt_handler_entry + add esp,4 + + popad + iretd + +_int11_handler: + pushad + call near .fun1 +.fun1: + pop eax + sub eax,6 ; call instruction size + + push eax + call idt_handler_entry + add esp,4 + + popad + iretd + +_int12_handler: + pushad + call near .fun1 +.fun1: + pop eax + sub eax,6 ; call instruction size + + push eax + call idt_handler_entry + add esp,4 + + popad + iretd + +_int13_handler: + pushad + call near .fun1 +.fun1: + pop eax + sub eax,6 ; call instruction size + + push eax + call idt_handler_entry + add esp,4 + + popad + iretd + +_int14_handler: + pushad + call near .fun1 +.fun1: + pop eax + sub eax,6 ; call instruction size + + push eax + call idt_handler_entry + add esp,4 + + popad + iretd + +_int15_handler: + pushad + call near .fun1 +.fun1: + pop eax + sub eax,6 ; call instruction size + + push eax + call idt_handler_entry + add esp,4 + + popad + iretd + +_int16_handler: + pushad + call near .fun1 +.fun1: + pop eax + sub eax,6 ; call instruction size + + push eax + call idt_handler_entry + add esp,4 + + popad + iretd + +_int17_handler: + pushad + call near .fun1 +.fun1: + pop eax + sub eax,6 ; call instruction size + + push eax + call idt_handler_entry + add esp,4 + + popad + iretd + +_int18_handler: + pushad + call near .fun1 +.fun1: + pop eax + sub eax,6 ; call instruction size + + push eax + call idt_handler_entry + add esp,4 + + popad + iretd + +_int19_handler: + pushad + call near .fun1 +.fun1: + pop eax + sub eax,6 ; call instruction size + + push eax + call idt_handler_entry + add esp,4 + + popad + iretd + +_int20_handler: + pushad + call near .fun1 +.fun1: + pop eax + sub eax,6 ; call instruction size + + push eax + call idt_handler_entry + add esp,4 + + popad + iretd + +_int21_handler: + pushad + call near .fun1 +.fun1: + pop eax + sub eax,6 ; call instruction size + + push eax + call idt_handler_entry + add esp,4 + + popad + iretd + +_int22_handler: + pushad + call near .fun1 +.fun1: + pop eax + sub eax,6 ; call instruction size + + push eax + call idt_handler_entry + add esp,4 + + popad + iretd + +_int23_handler: + pushad + call near .fun1 +.fun1: + pop eax + sub eax,6 ; call instruction size + + push eax + call idt_handler_entry + add esp,4 + + popad + iretd + +_int24_handler: + pushad + call near .fun1 +.fun1: + pop eax + sub eax,6 ; call instruction size + + push eax + call idt_handler_entry + add esp,4 + + popad + iretd + +_int25_handler: + pushad + call near .fun1 +.fun1: + pop eax + sub eax,6 ; call instruction size + + push eax + call idt_handler_entry + add esp,4 + + popad + iretd + +_int26_handler: + pushad + call near .fun1 +.fun1: + pop eax + sub eax,6 ; call instruction size + + push eax + call idt_handler_entry + add esp,4 + + popad + iretd + +_int27_handler: + pushad + call near .fun1 +.fun1: + pop eax + sub eax,6 ; call instruction size + + push eax + call idt_handler_entry + add esp,4 + + popad + iretd + +_int28_handler: + pushad + call near .fun1 +.fun1: + pop eax + sub eax,6 ; call instruction size + + push eax + call idt_handler_entry + add esp,4 + + popad + iretd + +_int29_handler: + pushad + call near .fun1 +.fun1: + pop eax + sub eax,6 ; call instruction size + + push eax + call idt_handler_entry + add esp,4 + + popad + iretd + +_int30_handler: + pushad + call near .fun1 +.fun1: + pop eax + sub eax,6 ; call instruction size + + push eax + call idt_handler_entry + add esp,4 + + popad + iretd + +_int31_handler: + pushad + call near .fun1 +.fun1: + pop eax + sub eax,6 ; call instruction size + + push eax + call idt_handler_entry + add esp,4 + + popad + iretd diff --git a/loader/x86io.asm b/loader/x86io.asm new file mode 100644 index 0000000..cf397c7 --- /dev/null +++ b/loader/x86io.asm @@ -0,0 +1,112 @@ +section .text +global inb +global outb +global inw +global outw +global inl +global outl +global _insw +global _outsw +global _insw256 +global _outsw256 + +inb: + mov edx,dword [esp+0x04] + in al,dx + + ret + +outb: + mov edx,dword [esp+0x04] + mov eax,dword [esp+0x08] + out dx,al + ret + +inw: + mov edx,dword [esp+0x04] + in ax,dx + ret + +outw: + mov edx,dword [esp+0x04] + mov eax,dword [esp+0x08] + out dx,ax + ret + +inl: + mov edx,dword [esp+0x04] + in eax,dx + ret + +outl: + mov edx,dword [esp+0x04] + mov eax,dword [esp+0x08] + out dx,eax + ret + +_insw: + push ebp + mov ebp,esp + + ; [ebp+0x08] - port + ; [ebp+0x0C] - buffer + ; [ebp+0x10] - count + + push edi + push ecx + + mov edx,dword [ebp+0x08] + mov edi,dword [ebp+0x0C] + mov ecx,dword [ebp+0x10] + + rep insw + + pop ecx + pop edi + + mov esp,ebp + pop ebp + ret + +_outsw: + push ebp + mov ebp,esp + + ; [ebp+0x08] - port + ; [ebp+0x0C] - buffer + ; [ebp+0x10] - count + + push esi + push ecx + + mov edx,dword [ebp+0x08] + mov esi,dword [ebp+0x0C] + mov ecx,dword [ebp+0x10] + + rep outsw + + pop ecx + pop esi + + mov esp,ebp + pop ebp + ret + +_insw256: + push edi + push ecx + mov edi,dword [esp+0x0C] + mov ecx,256 + rep insw + pop ecx + pop edi + ret + +_outsw256: + push esi + push ecx + mov esi,dword [esp+0x0C] + rep outsw + pop ecx + pop edi + ret diff --git a/loader/x86stdlib.asm b/loader/x86stdlib.asm new file mode 100644 index 0000000..7536ef1 --- /dev/null +++ b/loader/x86stdlib.asm @@ -0,0 +1,124 @@ +section .text +global kmemcpy +global kmemcmp +global kmemzero + +kmemcpy: + push ebp + mov ebp,esp + + ; [ebp+0x08] = dst + ; [ebp+0x0C] = src + ; [ebp+0x10] = size + + push edi + push esi + + mov edi,dword [ebp+0x08] + mov esi,dword [ebp+0x0C] + + mov ecx,dword [ebp+0x10] + shr ecx,2 ; Div by 4 + jz .cp_loop4_skip +.cp_loop4: + lodsd + stosd + loop .cp_loop4 +.cp_loop4_skip: + + mov ecx,dword [ebp+0x10] + and ecx,3 ; Remainder by 4 + jz .cp_loop1_skip +.cp_loop1: + lodsb + stosb + loop .cp_loop1 +.cp_loop1_skip: + + pop esi + pop edi + + mov esp,ebp + pop ebp + ret + +kmemcmp: + push ebp + mov ebp,esp + + xor eax,eax + ; [ebp+0x08] = dst + ; [ebp+0x0C] = src + ; [ebp+0x10] = size + + push edi + push esi + + mov edi,dword [ebp+0x08] + mov esi,dword [ebp+0x0C] + + mov ecx,dword [ebp+0x10] + shr ecx,2 ; Div by 4 + jz .cm_loop4_skip +.cm_loop4: + lodsd + cmp eax,dword [edi] + jnz .cm_inequal + add edi,4 + loop .cm_loop4 +.cm_loop4_skip: + + mov ecx,dword [ebp+0x10] + and ecx,3 ; Remainder by 4 + jz .cm_loop1_skip +.cm_loop1: + lodsb + cmp al,byte [edi] + jnz .cm_inequal + inc edi + loop .cm_loop1 +.cm_loop1_skip: + + xor eax,eax + jmp .cm_equal +.cm_inequal: + xor eax,eax + inc eax +.cm_equal: + pop esi + pop edi + + mov esp,ebp + pop ebp + ret + +kmemzero: + push ebp + mov ebp,esp + + ; [ebp+0x08] - dst + ; [ebp+0x0C] - size + + push edi + push ecx + + mov edi,dword [ebp+0x08] + + mov ecx,dword [ebp+0x0C] + shr ecx,2 ; Dividy by 4 + jz .skip4 + + xor eax,eax + rep stosd +.skip4: + + mov ecx,dword [ebp+0x0C] + and ecx,3 + rep stosd + + pop ecx + pop edi + + mov ebp,esp + pop ebp + ret diff --git a/lobj/exceptions.o b/lobj/exceptions.o new file mode 100644 index 0000000000000000000000000000000000000000..9c25e6e50fa979fa180857a323127c194a51c575 GIT binary patch literal 3936 zcma);Yitx%6vxkQ3zX9GQm_Kr@d5IX&2Fhs@yVlrN_@}~P#~Mx*=cvn?9OI(wzLES zu|VL1gs30TpfN)HWMVXasIf5^#YDc~M=<#KVxobN7&SGqSpR4D+?@x@#+%$d_jms1 zp1FJH%$+&Zy>(M05+T(h)Ic5)9d4~Con^C>T4*|LKk>_{Yd86K&sX>zx!yK%u!%~^ zk?So3Gk%?zoSYo_dNv@#a}<~D@$T`%2girqsXW1L=LyX!fMJS)iuHT0El|G9@^IQy z-&WSq#2020p*ol(Rxio~`@GGztdwr-)m&S1O(&Pl>(*1+(qV0-Hf$Cj*76wS?PY5< z>J?RUOv~2OX1bYnbq^V4!OhzFJ=(_XV77>nmKxUfn~oh)%~Yvh>vi-(4S&$}Ony+e zvT4mO7(*|bsnEg33 z@0Jr69J7e=tuZcdR8b=30--#c&AjR8mR4|V*ED!*YOUl&y}!Cb+Pq=IT5aj(=eIA@ z*2Fquak`TihZfntjUoq{A`4p@8;_%M+u&PNR*0suT{pAoXmow+6!CY#vOl1$zku15 zc{`!CpdUxC&W#=^2XNjY^f%G(MX&0wc=J!g{Yf2t6xw%n^vlq0)Y1Qj)`I_eyX&_> zTV6-+g0`iOz7tws9eoJekvjTmXz$n2N1>gsqhE&hBl$Ej^nvvyw*U|Jiw>{6?6xzs-?M@&o!xPhk1!_#%zq^ zA?^zClOf&`;;mp+dz^m60B;2`E9VO1?CUH z>fST+wbi|5{sMen?k)30u)3GbKY&%^{kWz8miey`H~4Na>vKZf9^#cDek{b#hWOFl9|lmFeW3@pEPXCc4%+G$>!ZY+S_ls29?3c z=nffH(MuKgh6!)D${VishHJcGmp4rKQ}}WuI(#v{go#ed=8LXwSxN5?Q4&jyC-JA! zmg!J7?Iw$+TPl?OiK?HYRt0EvfYt=4D?kY^J*PFNYdQSX1 znCD@i+1^j2i$BLapU7eR0MS12k1*ebcPrZmvESlT_1Yy{;0HSg&a@>awXaogJ_Vdc+OU`On!B~IcOlZ=WJlVgl6pXb<(eQ{^G%5tH z5qVG8^sdCpjt4BS_Iv6;#Wj?g|ILh+^E8%Y-&kp~Qe_3UNVK9l=BX1z%dKcWlg&(1 zAtWrY4Wbx}?Dyd+xr`;(Sai)L%$o36Sv4w6Z;f@9``{;(*ms_rTUJ!VQ%x)z*;Y2U ztOY8Uu`>3ImFHcf?3(jiDzE*katq5lKY$J3n3%eOsdKJTa?LrMc%aslKTI?@Ol~_6oo^01ZqY10410y(${wGC|*zh}8WiPv?N`-nrgL+gt_AHSZs%|@Ip zD5BmGbP`|iH004e3!xYZ?JwmJk`S-Crut8c(f15T@w!8(Bz;EhA-3lvn!!0fVFR=a xk{-cW@y8oi`&5pxiVcT(sn8dHdPwf=lmPt*_AJB>ys#)OD^e*q3}8y^4w literal 0 HcmV?d00001 diff --git a/lobj/idt.o b/lobj/idt.o new file mode 100644 index 0000000000000000000000000000000000000000..76f0617d00534fe45397c5173f245a2b546968d6 GIT binary patch literal 2076 zcma)7U1%It6h6BKXyQWB#C?Ri8`9f%^w1PoA$k~HD{`qGQ1+@Rlgbk7NDMxBE-qru=i z!PktQbIV)W?!Ic=@|U*V-^u$sY1ESwjpeaAkxuSdgM1@(+57eyvsZu7y$$cCciXL# zx9a_Mgt}3pnjEVqCmSwOmchS>>PE1-lm3cR+L>vu>iv|QtS6m@Z`A#XhP&2(=9T

uGP53B4lXYl7E(^_%4NGoqgxq-#ctlXv^wKntDL&XuV5+%iXrGFU1?x1di$ z+wq*6xKI@(M6VAJ>O=1*J2~g08rExPktnaH3_<5+B z9mi>Q#?DUjZ{99Ul}uq33+0)TX;p;tnrY_?Gc%TOrY*BzN2H2rI}2iQ)_Nm9wYW!; z>3MN+>D+=fTeii)_mkl&(F$j4~-iqjG4t2f~=X3;6C9^YH$ zE8YxoS9%RE*?qN-Pdp{pW@@i|y>(9ZLI zf%9??J}-Ya)Oq=RR%d`o0eH``Aw`vDR6RLlBWVzexT-?AUK+|hJL`Rnz=v2q4J3R$E0v*hkn#v@Jw zD{{q*?Hx{Bc%0^)TXviz9TTavr+EaDciz#^pWOo%LBnSPuWlKwi$r&DRC zV?z2}l8JHS9jEx0m@v{zjEGZxvrO#mfetaLx(}c$e@G1Z9QDOa;pE=oWI!wPlXg-j z_~baBQY-Mu3N`~tepK?QzG-xx{nXOUM`iL^@uqRcDSDq09~x(v=shCqpOVc-gj+PZ zma4be+I!eEmOm-^VcGbk7&HFK#B)(HZbI3dP&N}oK1cl}HaC%L{+G=MEt?O0%7prZ zviXoWqih}$Zy3L4BDr5Chh*=5v0C)FBp=orACP=hZG4}p#MdMnv#Gbp=k)`!d7n75 zy!W{1?GvvpuRkH`_sIG_*}O+>e5ikv4u9)C0V^7e>^c<+(<&6sN`6-QuaQ141(Syy zpOzPye)s&6P}JNjHn&2|7%n%mZhx4VnR)oZ7%c%Kmz)l-u(9;9{gpc?=F-xCgY>O3 zvL1h?_G2|i@CoAkTt?bqk6R}#MzM)G*nC+;|%)tm@k0M__Lb zU$d~V7jdY}nebcIDJ907qj>L8$SK8YrzzF-NT1u

|kuFYHWbI184=CE^N$xoYp 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 literal 0 HcmV?d00001 diff --git a/lobj/memory.o b/lobj/memory.o new file mode 100644 index 0000000000000000000000000000000000000000..7d78c2b631a88a542c59ff7946d747aba34dde61 GIT binary patch literal 1280 zcma)4O=uHA6rM>ovTAG78bPSwdJrn=5~Lt43Tex>f#Iuu9G4|TuAA(7|c2X)dTk_ugCL@|H zr*CZyin7*y86P42=1W$UYHr!F*J6^7DptImc&#{(EwL4uPf9)O1xePol3rx06MXXW z-3wzQqb)x)w=A^5e*B{9>WoCa_Q-bMlc3Y-{E!D0 zHkL$70~-1NXpd{Wtns?W#~Pn$e6R77MhBS52vO2_Q=@PjD`8Zr0;75t7mQX9?zmB~ z90~VUC8`Lw+Gq%OZYd0dMR4>63+3BroDKh{97i1IW?q-~`kcz8k1~k0AFG5#d5+$F zAUVcxT709E+BVbeHwC~`jCmS5<4v3c2j_0Y(F*@JX(EMjoPiPgxGri$TS|sOE^D1& ze$xo_^gX^I;i%^L2Ie09&`obpl`*B1?#44IL~|zXmmppN`3HGF*2`n@%yhk3B#nYI HV(R?{q}`u_ literal 0 HcmV?d00001 diff --git a/lobj/stdlib.o b/lobj/stdlib.o new file mode 100644 index 0000000000000000000000000000000000000000..23cab646871e49a0d3dcab0c56702fa6a9d21974 GIT binary patch literal 6056 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 literal 0 HcmV?d00001 diff --git a/lobj/string.o b/lobj/string.o new file mode 100644 index 0000000000000000000000000000000000000000..70ff2863f9071ab56b10fea969f17cd47aec657a GIT binary patch literal 1476 zcma)5&ubG=5S~r9y0&TE)*gx#EQnAQ7O@3?Lv4B1gOwoWrf8b3t+bn#WCK>U--S2qI{8Z~9DWsGXpI{ZdnY?d1}74B{!Z@rdHuT2+PhmaH92`{cx38U_SEos=bUqvEe!AjF`nEO zqhc9DY13TAK`yLss*p)bTG8xac<9FeohE65psmUmTwJXpK z=x8#&)L#Dz{vGI_*1ton7rp*&f0j&2a-K~2-b}`Ro;JbsbtJ=J@c_o&4mt2kyi>Yj z5AUiU)7uZE&ECk50`*;xp8(fqCqDzO&q~f&*JmTY3a-VbQSytA3Uf|g7GN#9g$VP@ zD-jm7k)JO{j-oaSd2d-3Jl7*aK0;FmMFw#}#M8tckzx8%BI7YWi1B%huVdVdQJm6> z=jUdCezAq~+A6w>j_*G9#hK0dIdNu6C2{ggp63?eW7M6$|FD?zTon6HIgUKOseTFG z*C-vaXmbes5Oh5DSMaohv5z@?SqsW{BG)fJrwhPG(UkAR{D0-~=i-{^Cj+t`XF>~O zRK6<_R~<}dSf68J}tW54=MraNB{r; literal 0 HcmV?d00001 diff --git a/lobj/vga_terminal.o b/lobj/vga_terminal.o new file mode 100644 index 0000000000000000000000000000000000000000..bc195d86285a4989666e02f1fcb9529e743e7faa GIT binary patch literal 2648 zcma)8TWDNW6y0|o=H}H&W7-6wG+>q>4ylDM@cI}BPbO8iCQsX;)gPn2qWX#=bn??u~FP`&N_ST zefB>4Jnqbd@%%HIrjZhj+_bF`UDj>OBLaGkohsobOZ&N|*sJB)e0IZ=#n?s{<#RN7(VC5k;e_t!Sl-(|ndY*}R|CY7=mnVF%w;En09{ zm}8Ashx4-*!dv5;UHQu@eis6ICvgwzuZNuQle$SBaRaK@o9f5BF2(ERZdiCvMsO3c z{kXa<0d<>U0{Lz!_k-tt4c#;wEq7qXQO=+KC z#P#8~&VH99KP&kglK)=vKTG^mq6hDZ*VD>~`JEE?NjwO2`G^iNqK;MOkDVu0kYvpTH?m<3k|WU-_lfKsqWv{`T=$d;@{(*Die+*v9QCiP%yh zlkhvGf`H-mu^dHn)}dn&0m<>VMAfkyW9O1a;U|6%z_X~(j4CJds|XMP*@Q9I$MN|4 R!#SPt`jG5Ha7t9XzX5WM_3!`y literal 0 HcmV?d00001 diff --git a/lobj/x86enter64.o b/lobj/x86enter64.o new file mode 100644 index 0000000000000000000000000000000000000000..0182dda8a341419496518c44965b522fcc789d37 GIT binary patch literal 4896 zcmeHLJ!>055S?}8$T27<2SU=A2$2tmfNTjPQlwB5M};dlX#~zQXEbg|jD+yE? z!I7Wfpg*B>*Ttnvl~)>f`32{Bd%K)cq)C%z2WH>Q?AzJB*WHXi9v%oG$e5r9lx0K> zy|J%whw{AtFNU6QbGpOH^y5yAOAJ|{VyPWd!=Y%M7Y6ZyW>@gjmK2dapf;o{o zFvtClc*-l?;qV51w`LWv3RnfK0#*U5fK|XMU=^?mSOu&CRspNPe^B7-qDbK~ya}T) z4sV+aGv{c|sCoITIgL7qW{u}bjQ@C|O4pSxRit+=sS@-8=}Y&Rql-a`I`_SP%1KZC zbv1Jg5OVZ8Stb5C`N2G7P0d9zj-a=kWb+h3HO|d9U>NZUWIdw+6Z02iD1R^sV-cPD zXKvT?chBF~y`l8{`hLX?26WPu?UD2q_D=_=QbosZ;1QPgsCN-ic81#DJb&o*+x2u# fm0g0j3BCqH6X0u&pEb5Le$m(i@*t?lj|Kl8_*o_f literal 0 HcmV?d00001 diff --git a/lobj/x86gdt.o b/lobj/x86gdt.o new file mode 100644 index 0000000000000000000000000000000000000000..80ab6ad28d2456a4ed4c754f5c53f3797a85928e GIT binary patch literal 752 zcmbVKyGq1B6upV78$mH3Vk0OvibX^a5o|16D_cuhXH8ZEi9#~PT4}p11V2I8AF#9( z{DCbkZ3Gbu{Q^BFlfm6$8xPz$_i^TCW^Qg8M~9B%h=n5)@)wEhSB348*QJj7f54u! zscQ2n0@KqZ{3>4uQ)j<&kHGGsq{ao9g;@>b2k5rwRA3Kc5$2YjS-w!XgF6ZHVC=_l zFT;lW-D1-Lau&AV8WPhs2_8VV0%jj-$n0xz+oiBp0po* zDPD@FVo!_hM9&@1J4$ z=%2v%am%~%+y;(pShr+%WCncsJ>+?L16Ss)3-%$ qt0WQJ1A^vRE=D0NCUF|;(rc+a8tN$cKQRXkk~1Z9{^TVx4)P0ci$u-< literal 0 HcmV?d00001 diff --git a/lobj/x86idt.o b/lobj/x86idt.o new file mode 100644 index 0000000000000000000000000000000000000000..e812ac1f685fd5974cf4bace99599533a7e54f50 GIT binary patch literal 688 zcmbVJF;2rk5Zp6?1PMeW3eq6xfW`=c5CugVQ>CDxMB##suw;YeyCPJijnd=~c?uuk z6Ld7Z0A|iU#fFZN)-!Xvw|BmMjRsdrDe+LUB1-;Gb7{7-lEq;Jags-8Wqwa*F0(%fUh`_1x^Nz#>auva|*pFxPF7Nqj?PGo7GTBkC@|+o_V@vh9ygKz literal 0 HcmV?d00001 diff --git a/lobj/x86int.o b/lobj/x86int.o new file mode 100644 index 0000000000000000000000000000000000000000..d7f635d3437ae599df1bf4322f58ad14143a8cb6 GIT binary patch literal 3520 zcmeI!UucbC90%~{%xOl{){+oqixzflJF^YRmNpl(mZTAFN9Wj|I+C zj?wAHgmJCd@n=f0+iKUGft}Z@FEFOhPRi!3Hy57d9Ynn|1uvMi=h}=t1*e+!F}#@8 z17rCuW52T5?17PR?8*4S@rL{-H-m{}61y@clI~1rQkmFRjCS|9Do!Q3UB=$Xe{J6P z!A^wDmn;YDlOc)&-gnr3GuFeiG!!yBFs>jEVcbZ*iSZ`#D8{|y9~d7b&%_0tAuoro zk~hQm$OEul(`_Mh0siO_*E<5|VfW_WVLY8Y84s03!)Iuyv4^!Tsbd@Nsgn z_peax^L1XpA=3m;lVgSGcL&A`$VV_%IedxS z4BsO6!q3Sk;CJL3@GtTxT!h_j_IiF|JfA!Vy|DM7H{SrakmGQId>GzCz5*X3KY}lk zKf}Z1VtihY$u;mB@<#YOxgVa2HN5LP2bYlV!nNeL@LF;KKJOTLA-t2^3=fh`cW*47 zNG;w~SJRcuL}KY4(-qIOb;gqM?nJ6Bk<6ran>I{Uc*lZ@Y}=8n%pIx>1XO;YDiBcl zfoLG0@&na@fXWXn2?SJrpe7Jd`GML%K;;MO0s)mDSQ-eZ{6J-}l|Ct=?Q^YFQbZf* zB1(#A3tdD>5pAN2C@G?CbP***w2>~Nq=>fCMU)iLX1a)yBHB(DQTmapV0V2|MBABL zrAkQ=ZKsPUDWdIk5hX>moi3uJh_=&3loZi+x`>h@+D;cyQbgP7B1(#AJ6%NSN20;* z`lN`qGq*}q=_2mYrmyyAdS0n9bEVcuT_d$!s{LJJb4R6~lX_k11F5g2ewA8)XRAGL zw$v)AtEJlCA9lV^>LICTrCyVIU+PP#pQMKIEVbv)kQ$M?N@}ar9;y4Ko|gIti{4W5 literal 0 HcmV?d00001 diff --git a/lobj/x86io.o b/lobj/x86io.o new file mode 100644 index 0000000000000000000000000000000000000000..478ad2c6d555f997c392b13840157e67b545f7a6 GIT binary patch literal 736 zcmb7>ze>YU6vj_%)D9h@gCY*1Wawgrszo{p{sF-bf>knTY_Y*W+F+B?3Kr**rLW^A zuJcDZqOTEb(Hr|oxSbUz9XRf6T5jDi2iUg>fC!^@n z)JHM@M#pCMOE~9q8aQKNXTdnG4nD3gqG~qk=c0-+ahjGr7~ODuCE`vJ`_?VTXni(w zul!xn8lx#Ra}&q6?3gc62pheS3c*7Vw!>N-?x~q*!t$bjsQQ0&`uaa&x?!qx1mKr3Gc$6DO`rXQ}_t}QDO4@+I^$F(>o}+ mexVjL$!*oi?}T-jE}Jfl$HpVuZ3SJj;aM1p`=ylGp?(3#LS%UW literal 0 HcmV?d00001 diff --git a/lobj/x86stdlib.o b/lobj/x86stdlib.o new file mode 100644 index 0000000000000000000000000000000000000000..469bffb3b00f893be3c0423f53e65ce337d7b9e6 GIT binary patch literal 992 zcmb<-^>JflWMqH=Mh0dE1doBi0V-hvrZpH?8JJ*7Nuoh!f-oCYmjIB{j%0!Wl+6yL znUTa70M#iX@j+&QfFKYfyW|2;0%Rr&P@E5lK{UurNgzfx?*UNLKcE;4z|4d3Lpz^_ zhjrI-beHmU`wAR<$yCC!cJ-q_Kz8#(<`R}Qs~-J{i|>3Bdl;zD@Bo@puC>Gd=>^~NUkN=Ssfnr(?C?E_MWMt3>vc-}3 zu0Xat5=-2eRUkVaiT@tRu0-OC z!P%hrWn{~n0KtvAoB#j- literal 0 HcmV?d00001 diff --git a/logo.bmp b/logo.bmp new file mode 100644 index 0000000000000000000000000000000000000000..5a7f2ed28b68f257e8cd1cd1bdf9082093159c92 GIT binary patch literal 256122 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 QPyti`6+i`00UImue{-AylK=n! literal 0 HcmV?d00001 diff --git a/logo.png b/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..ba09254119b56c5f7d9426293ea73a18345bd9dd GIT binary patch literal 139224 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

W@18?0HBeFxVTk(3hHG8)!(DImGLz zvBdz)qW1RZZ`6T5uK&!t(48Jek&t+7#;*6eWu$9ECFh0#=wA{XlUDO-WM~-j5LJyK z-f9Bp^TX1|qV80(Zo%}o-xl(4sY+ZcC0sDCN5P$rwBN#TDwV&FI0L+txyNXqf^ zNDSTjE&IU+Sb>!x5=Y@!9GnT}DnL{fg@OZM4G8Gc7Gzn*Dr~qZ$Eb+GgG?BhER^4@ z%{QjBtbS{>d#hYv2(+Bj+ml7*18-3P#^{Y*oa+OMZ0VGfbjYH*=Y%6-HbL$WHEr*y z>`)fbYh?ph}wu8I<%IBxDQ*ICi#JPO| zfcA3^tp=xGZ;Z~iFiA5di~Q~7qMT2%9?Qn>lA-nH?I8*Q*~CF+Ste8hKO_ZytoYp{ zf`YQL_y@MWk2Z=1URBU5bOD={l!2l6=%t)gIsgc}z0EoqKRr-wx;y(xtfxqcs!;{a zj4uSDSFodi(n7fgt`Q1FJK;fpR8q&IIEREdMX&ewBr4xl6gM-XQ2IGtdf9<7#^G|6 z?s%mia=+EntXB*`)*2#hIrZMOf4%(4(Gs$BT#1QEO2-!4g9SF^lajz&rt7^LV*%ll zY$E$V#|_PKzuu$7MGYx)sF4TFEJJTQS&2c0hoJ!$##A%imA);hz$hfg&rcp)uq;L` zHgHI3_YbdXl<1w8vY=fpuKnuAhJ)U_>jPsE5ssc3u$u;I+7&RQT^L^#`?v1{F6#oB zW?q36KjX8(@%$`@&3NwdQ8P4q$61y)XwYY;%Y6YCjp-AH7=`XhqgvNafOZABQ|uQ;ks6|}ty9Va{h^Ch5KRvtogK2Ot`v#Nbji-BzOM}G zqv>saO!4+HLSM}-LO}Tu(6MFEJvV^f?>6@fa1^qfD{k1YcLSO}zB>)DOiW=huGnAL zn(#$xL2*5!x{9b|I8Wu+>#%iTQ6)E3Y#6bE#c@t^m4FVXfuddeu%`o2vcGN(o;xop z2)2^c$C_v3opX|WNO(B1$0lGA;3#bN8Wd#(Y+-ZNGLLtg&OeNVR^KkatpkdJu?owf zWiK(XG0kPA1h4^wD%9ldo1v6sHvcV!%f6Tv+)OO{(!RmEl}N$z-SR$yuGH?in9Wp8 z)HD~^Z6W4y$OszPywlvDjP{vUrek?b^8@f5V~qnYm%T1&&gqHsam6g4gGi9h56CL@ zdbdI)R?s|>$Ub+`(z6@rfD)ShuL-*5!E>>zw&-w`qW^KabGeZ^^haBSO^Q_C85j|l zby4(XCpzen@zU~(_GCFHz7T70fws6-Ux3vc7k!}hcU=3z6+Qox7^Q%Ca*yBXH^!fp zU2NA=39AbZS21@br;zTY0Z0;Tcie-h-8(}}5s|MUCxEJ;Hq{wzR z+{d}WdXL)ejN&S(_K4SsO4s1$QzU03gI9fHkH$X9_hoU^^pD~N$n(@8x<|&wf1ub4 zep((L{_!be1Zl*x=N}nzgD^2quFblgBwkvqd%s!#d+fvdraASX|DusH)V6ph<+}Nv zHQdIjXMopYI89u0=lR|%U8zMwzz4ce|J_Oa!>M2AV$po}x5V<-lbB#NEM<}VFk%jK zS)LiI%qq4TWe#>ZLNquH9O{49k9L=#`~1pp>9ZU0uo%Izjpym zTMQW;RS?z?48E&=rIlJFaEqbvyRZz=#GmMrZdnasU;*e?CQWDxj``EX2bO;-!Cg*z9nDo!ZbNNt`EA+}1O1 zYCe4zVKKg*naZaiPh8ETX;47>6T#m4?`qd?6M(I+V-4rHQrsk78>y~6v~e2t8g?<} zreKH1@E13q{%yQKJiy;Rb(;Tl?!w3*@xRVb-8h?dR2j=wnrd#;1f#^<k@=l1Wm9B5*F#B3R$Ljzj^b? zPnBq5_cS6947si~Z62dE+1#iLz6Re2ZA*eE3(~0P_MmOXmD%O-8ZeKHdgg<*>9UL# z|KhcT2havovGGE72xW53G_*m18@!+X(L_>VH(gHV+Rq+;({hfMnNamRumza$vI2Hx zHIZ2?N0;p)Dgd%&u!1v0`Ik7xMJ+5W`1dNuj&CG0L(~RH_8QgiZn`gSmI+&O>j|6O z!Cf&)OaKmsO{n3f1?bhgSx54(e^;bre?`RoM>NpKITVXD78ud`?e+bClzn$RmHq$! zRc_T?p`jF_p^y+I8KI;?MzmyAvNN)`qk&4PV})=;Q3)B@BZcf^lxzye$jIJ)ulIG% zaew~#{_*p;|F}Ejy58^C>-l=V=KDGvyjgq7EEL0({w<_`K`vNWKN6^_`JtXX^B-F` z6ubekwu7dgch_EYc+JpYPDeQ-+5z}7-Xq+c`~BFHo7!CsyZ!q68$O-#TwN8iPSMnZ!H+nF7LyI-A9Iks?KDxaB*p zFcIcBHY-~R9gg}G!-{m_5S}dQvgHF!=auB#4enE?Pt;k1g>=JEBfLiT=(QbUw`#r= zg!yoL93N^tv3fvs7jiM31T;E71@6~1gJ$oQST*XG7Sa6_8M?+3mlT2F`7G+fXN}<0gHSW$ZqcxH!Og7ZR z5Zt@7ygbf(%a&kKTj;j>Y8uQw4w|XXOVPDO@i(M)xv6u7O7ZeWI^FyZ^LWz1<?@xt{h8)tQgbH}T1 z=S}{&?Q$h*f=^n6BLNw@L>($iqe47GXH=|C7aw>LfFb0*~-hyZD3}Y;@`NSv_s)n zu2-WWOi@7=r1Cvxh}ar%>l{&#hp~Z`k>;P;$+FIx3e1~XMbmY+$m{i@(D(b-a*VM9ngJNQ7M-3 z;#xZMAjG*6M+Zj*yBWeZdd<<(gp8Mj>&2M4xvb&t8K7f;-|GGRM-ER?Ye!TwquH8_x zm|FXMK@s06S^h;8R9i$tX_x$)d1hUSvIm+jYZS6wAT!%Z(b)0kSi9>;Pi%l{d52}T z)(!=eWrL^HF-f^Em4&i+o^W{HvT?n~6SqG!qWck#N-U!r7u}O381|G0NkD%=bTpTH zUCcQ=`uV(;yAom??a6pkVnx7t#X5P7LgP!osdO8?Y5#>uynAB!L`su*`GX7h9i$Sp zmzFB)k?5~|x~(##sOL>5^eYIf z80sL6c~^Rt*IB5n6XHEaH+CA32x^DTe~mgX|7tWN6*r-bO) zPv%iLMLciG*DPI_{P++puI}BX_wP!z_d|H{hsSt7|MMLURy3(&GCp8$J!E;7s*0^# z+s+7*KUzhde>trLxz0%Jg_tv!{2kBPC=<^TIS&cO7XbZIBWCq*L7mLQc`lRXv981L zwL5>Ul#f6U3q@dqlEcJXr-(TLY0tMe$TAMeiPJ)m_@Q<sR?iqyo>ERsfr8}~)=nlwxw^pm5%WLwUfL8alm@2-Az zbGlz>Ah5{H?1tRQA@TUQc2RtB^R6a=X_e5IFh{=|QsBaDONrw_QgysMvyZ-#9O#)6 zX$=$P`Mlh2=gRd%dHt>>fC6lmH8t^81@xP=8wJ<$?hGhD+ML_Db05u^HftqP52ZTW=R+fz8B!9VxvZM=UG!sHy9Fz3f&U}-vy@IXE<&& ztjeqY6ZO~Di1Jiw_*}~;i}zgO=jwRN(k?p0a_Lr+YGzl4uBiyyso zYs+)X6NJU|+fme`1pm8{BST*sLi6c*$1dfmCo&F6+ zlCWj>HtO1EcD%p*q5RSn-5@Ks*RG<2VqOg=_2+DSbfzg%V`Jk<-B8RfgMdwMGT2*D z^_-|gSs>7s=>duO6&J&r1<~Fc&5WncHzs!6Xt9m&NbT9xo)gV`1>JR!WH zQMWD<4Q>XB-rnRu$I6zTo}MgdR*y}7$tQjv*V}e(S7Yk(&Ykmhk5SRf21Zx`FW!pz zVcknSngMPCB{^T%G{DF0e@wrv+vVRSPb&8Ka1#6Xomn5l)#oz6KRdqf_Yo-k=|EqK zTfE)9gD2yF^S&U1_7+8EnVh>0ByqRAuL4xrjY?F8iwnb~bG1DslGo4WW_{jNr87fP zMVe!~s;Q~z6r}t1Z9k+Tx{Fj1-Bb2Z@feXSA?ogSGDqcQnhIxfFDL0mK!KJ*{*lxD z`s43^H2gWmJEfehd;MD7r`!75^IX}FUZou90q6(aG9qpWNDJh2OYz=IT|;~u3PWJn zp+~JC`|^&-^OUV~J)cBkP*ogFx0$x*&SqP-2$rQQ_VVrw?*7Ijse5A=_>TN;hmH{H zH8_eMZ4(%a;a=o(mvSg4?mWV%QFA-5BR^{*IDC9ze#8*U`KFDQ5dvg!r8@DlQJxLN zjZby^M>nrnZt@M4u%rAyLD!c=`%%F}}z6x;!#q7R3 zaXh96PYg)Wg8)gRrW8Yo<%RJhoteMuo&HFzejCSpeCox*)Y81D>(rlxv5*32_gVa~ z*Z#r-jrQl=lRO2=Hs=~9_T*1|R-6jjJvlJ{+PfgK<07?S7=QBdc0qKU$)-58W6PSR zkIEE0BI$`2KjJjn$?4ST#qBug@Rswhj96JF4~55+|Kxz=%2pCzz1j=Jq3Hj~^;Y}W zQg}j7s~*vV;vqXNBf+m3r&`4VM}Ka^sldVP^piwOMUU|AbRL!i68p-wYs3oC(>zin zBn@nJ0It?ML-s|T@`6(x!W8}GWzn7|Xcp#twe)!9Z8#nYSK%q^QuIFHEKqizhjPYP z(%zR=L?XC!!{MB73T(QOcV@%rvjBnlyQByZA8?ysC6UzQ9cN1 z6z{DWJoH!Wyp1)HgP2Rab(I)EJQ}b!J#;m-QX_ZbsA*j+)WP{P^c=Dd&xoTuJ)ma! z#?su+ueoBk6;XN&=bhqie6bH^3+L$%?-o{UR~^gXiQ}DRQPgOm2TAH`K|w)1sKM8$ z>riDI!?k7IU|Q~oXRPt^5u275wQxkm#RFQw(a}8l7Q-Gke3_j`K!}s;Y(} zi%)oB0^EcZ1r#+BSg8><_6-6vQ4=zWGq=9l*Tet4g`I4m}~-sf`U@96lfQvYW^=#G@!e_p}6-ys>ftRMx8=ay%8*J{~D|Rk+1o z`Y?qlSI9qq%!bRk`?(v;{i?mc9QD%#!ql1o>G1NqbApOb{qy=+U(l3?EmbAo_>$5n zVKLUHKfGm4l;WT~OPN9e*UN|FdSzSHq@PE@fg01s;jJ81+WRF0%JLN3m3rc*HxT~_ zs+fh*)P)UBlyF#e!+>^m)}rdUn75DrDKh@#9`_XOtH;Zu9jQK- zVYwW@VU;VQ{mF`#_1Md{Ps&LXYVaSi(sSXVAG_GWm@`kx(MVrPiob=Z6^tR7b19}A zDlMaZWojWf93#*|p;BFG{u zB7{mKs3R15#Mo$Z;Cs}>&TAi>C$z^s6o_n)Ss9*mw>g;eql3+1@j6{m9F@9`Z9y;y zByP-fyyB{(S-WM+Yi(7PjF)p=udi^sN^j*=twcqFvs}(R1T^gqx zA~gHi-}Bjso^84u-$6vT%o4|T+1#$aW@}OWM4&aBpvjQwa}-BOo$RpC6nzU6xpr-y&J9rzSdWz_o#xF!8QoBRvU< z7fH&WGehT4+-55p(UqHqk}Xd~Lk;y&Nt4vsTO*v$H5;>+{EZ{4;82h#jOw8gQq=8v zDPgOjr?;dfvncy`aP5cR344R)f9PwEzlbWoJD)4&nIC+sHmuYvsew)NC%y37pbQdK z_2)WKx16w)HTLp-3NQxTt=X(&sy}S1|60%7UETwRKN7S;Ay3qE>3^LIhYQgEFa7oR zbo(J(yL+yJ6jqCz0oO~q|USSzLea_z>p9M z)TpZvULPmr9gowqi&l?6@@b?&q$TcmL6y0cN5$Cr7IP)24hJEZ)Dxm#T_IcmyX)H#tkwR)svI8 zN6V(t`SKOMFEX;v3Q*G4LW+PYR%oEo&Ac$frYh%NYWLKZ&xOXx z{d%rO^}=&`Gv&F5^z)?w-dfO4x}2yJ3QZKF@9!=-!)U4o^wx?Wvw6O$X^K@0IBL;6 z@nu>Z8m~vK+NB{osRCPmS#_-C&=WYoP$4_~qMc>(+x>sHnjK2LOJ781ePB?~>$J3^ zU-FM03JKN=`@P2PET8&4B?q&hUi0?$6z_tm97XnBQ_qPG>5btW+Yg%1Yb^;$4>qtF z6%tlSxYgu|_TR5AQ!vog15?k+Q4CT>CEwOEuD-3#C_oyd z1;w4?E-=ZDCI;LnKYxz_*RA{K=k65_`;iR?1?r)FpyM{@X*8>x`p;^6?T8kymFus$ zq^B3zVwr=t{XHi0M&kbdbiBXX{&ZfGS0b%SKwvU0ezXlA3Lf}2WHU(^F`CT1@?f>w zf%VjG5Z1uY?KXN6W$~q4uD8f69xu*lvi-|A;4LX$w5VTmo>pmtCjmj*O$Ukxrr%9{ zbnf(KXe^aWN6QInTG7jyaw@2T2jz#lMBSWLx3br(SIGpgP{M|h{CUg7?16V_9X9V5 zmdc|x{4*m?|EhXYE*v?}f?_9wFq-*DW-#b}=fvFw;ngVMteYac z?3`~`W0d7m=$JatbLIYOg*WYg3eRVV}`y8LT8l5XJMX1*1 z=|C%@Y4X{RtUrEBTGH;`>ZC||kcjfSEKsg`iA7}e1^R1YOMHzF_|P7dqrKp{>HbqTm`N#u(NvmGt9 z!Upd3RD@6pmgfuV-)hEjrY^6_N}9+x<+az4R^P=Mp1~W)WcoAPrgqMy3Z%NUzdz+Q zX-wa8gIH4D)HNYEH}(hGND_Ij{(c3&YfgFDAEwns;k3{9_jsp8VzNQA-hKMh?6^Hc zYX3IFyI!kT)c2?m9uV_lgK+NQmIbr%g>H^G%7a>i`>Vz1eLakCFREps$qTL%F0o&Z z>6bIH>AY|>mf_tIe@}|MJXuMPuR6Ep!94xWS7V6I*1;$CgPnF!J_2C7xy7JNUUyh#p5*T}f{mtp!m|X2ufGQey zM~%PVPu9ks_2-(MYb=ONjEmgMX_g*lSt)dt+U{4^zqGyPilKtcx3#mo4f(Y-Pp>7t z5Id(qJkxYsrH)6X?l?!>jVD$RBG1?fTu%4~E%GC7Gox<(%CeOYc_UvSH0L-B9^{;1 z#rZ`nVedAr&>&~=kzQ`+BO^U+36~%iPvoX$MsfgN0C5x$q{NqVRmfO3(AF7&v z`^~HtWBvG~?zr}?_i3u(M=K7P2CHa1-!e~LMYv|rp6i^oG&g9wIN4|nB}e5b8Fy4N zMmcs-w8{5yoTVl&DGA16L5<*Tk0_X2#26aaMbjrJ)dN(@01@AYdTi#O`uB0x@s7B)@(~`1 zEq|yUNI0(*eCtkob@<&?d>U0_+)dKjM)sHEZdM7OT7@+zY}kJ28#>MqZkf#w2U04~ zgdT|SH6-r$3Yn-2!dOtC)JX0T z$YG7ykD5H2n*XGhVcBN$^M+5)sH=Y!u|*kv-r;Tk>g;zCRDm?eZ`-yFwG+nB+-YOM zl0Ebz>O7XG`oa1Ug+iLP?xC9I&}1*f5cKl4+#>SBh}&QQai_GCH8IwH@JBzKx`)w0 zB5c|?=7-dVcaiV=vs37qzd9?b4DONlz6Gf+KR9KeG{&n4~pp50@Xy?8K zmAw!#fHQh8codD-w zrkT|49csy_fg;`WsiBrQNUEUdW_;tjhQ0e*m(P)W)CHbMf@o9d4js@>wnOE0WZYOpFX%voGpi^O>EI6Xv0_8U!#z}{v=GPW2 zpPHg=dA+s?(;0pvuyhV5A7%PDu*I^2k z%oAbsc@_*yKlwi)Dpu(7R{Xz45T<^f9(iDVHyucgoGYv3QyMg>O#Bg+x^mr3EAQ=o zxbosN`g90}JqlbwkvhhtK!qWO(K8r~Ph)Zg2pDU?-6z)c2oW~CVjkSkKGDNe}#wK(E+=?p8Faj{UbSdhZ95+d>a3sTZUsR2Zh9 zyt2I0^d*DdLe6I5(G$9hdK$gwfD!s2(IWWIo@^QkLoI7L_ZV6>j>%nkS3w)!fLOw$ zpO%qfgcaaZ71?PZcJAKAai#s}(w$oydUnxg;y}OG=qVKTe`x8yi_zmr>`}W>2Orxh zrep*=8E^erRBR*^rO;7G(}hge*{ibY_@Wo_vZ>p81$?+?{fC>4b6E^+D_G(qtfaFT z=>@LdL2{vgIa;v#$cnnvyDwX53*A>jLA~6bix-z`expywZ59cEv(++Z7>ePv2RwW1 z%6~feZ_Rqnk1tJ*IVZ&=>WDkidVF9+{6CrLgJ2lOx)oW&b$1T}Za-!^kf*@Yv(ZH{ zEZL(x}2(S7CfhhuV-1@+Q2fpN{;{2dmY8?TDKx7<@G&TDb;%)^N3wKqAB{Y zdNtFtH2#NyZBMq3x*sy{tu|76k#n4!v`oze;g|x{5junDnk{T!N2@DfCUwD9^d*k2 z`t51Mkhg{jM3?F4i!bb$3Vl&>0SUCa8%Ee>LjR5&x>9HDh3#nFKl#vsgU)Tbc6+2z zSC=q(dv;Cs8tAq}742ab_tqN6yN$OaFwmwYb5idm^sVMQ3rk<*D|~zBxbS;Ev1V9Y@K;)z$G3T9?bUsU&~5%aM9&+8We=agOYA>) z(vEXL_Y0|lAim~jH9QIs{=z!f%*}EKElg{5!S!V&zJ8WRFB5j*f&fWpQ_#PY#aEU{ z=0O)DMf`2uhu$Im>ze1K7mjW?+Plfz66v0hmyE<{IXa(=o;otW9z4<^DkhS$r<6}I7He$ zqVKnJ-l+P3K9NwvG$HvP(C`)LMQNQtdd9AP2e4|REuufUR9p(-U(C66?Yys|mp~3K zyH@rncNKlqYGbnQ)mU7DgH2Tk+cT#Pvd^NAV^U;ScwUaE--{2d# zT4Q-RbHfTW-~&iNn7JQSKv##T@D_w;KCgpq0OGT}^n7T~i377U6~_gz)sI3|^&ekc z!~uJlYZa`#@X_c$e)vlzn7J9cD2Wj?VTqueCiV)g4kW)7m;9jS`x)Gx9loMtGMN&5 zj=yjgq5`837qQ&$Ryo<_7~--Fj?uiPOTM_ca&YTt<#!pvVH(n8PXX?+&^^Qm| zGPSJjl%=dJG*3a89GYC?Vu72&e|J8Oh*!w%@rcOR&x`oYP2`4jn$VXI!x1pBRpXDL z9DR))LCES=)Vd;S>VXlf-mp1E2&=@#8>5UxF;A_h?B1@o&h_FcK%L12xL-g zWQi-BV2bZtrjU*fs)-yeL!UD-JYFz^7kH0;M*qI*$S$6PFNO=(ra07C&F&BRrJ|K2 ze50?V(db8C(TJDEM6vi@4X0Toe5b1a1z6#THQKJ(U`z!!pBg;e6|}>I3q;Bw;pBGs zCm|h#G#7j&GimP0YOGLx{2kghsO}qD$Is3~xa^OXpnuJjZTg}x-%2$E*BeN~xndc5 zZVzOIospUgb-{eTpigE>^3Jv~+RbA;DLU7oUB*L@2JQj6Lfzy&Hintg}o+8Lu+d2(RQVG%!0ZdNnch-gA zn;J{#TCE02;$*A;0ftBZUFO$ML|oRPcbRa(=tW(l+U3v9Xq9N$o~pZk;4GM1jb6Ii zwCT&1$PKk1s$8YMhUucKTxX$EM23#6_&5A^ zlAqid+`n6~V%RV@(Z|_L_mmyqo(JE};o}%fb0w1Q&CI@+HeY+;#ljf6Vw@cB zi2&;D=)n}1ZaGSrD>cl1#jjmIuM;DXjL#ooiHXA=SQ!N)h03@11 zUx4!(+bY}j%Fp-q6rk^RTDIgOhcl%1D`Gc-F-E138N+j2uk@|p;fw%f{XdgyveAyn zMb{IZ5wb8r+V+T%1yS=`4lFV<;TvK}7c?Y^Q6;vKOiLRd|F2$0;;R0wL zB7@R#dTK1t`u3DHT9tGW7%Qu^)Zizp0XGVsJzWOqOt_Y8saj!5#N5 z-~caYYDQA2$SM^%oF81}<4ktSt^8`ZM{YGnaK|xcHegF&zNF`|uXsnyS_C38hHtJ& zQyPx-eXWxd&(Kgx$;a711Xq&qJ@XKGyLd{+OsPCt$xIor2$c~Q+%>o z3~v#{v%Ka>+6aeMO3*EL&-7V5pOR^TG$5krTU0927UqnIB%^ud2kaFjqttqYb3Yn zdl*bWO&G)UK7#Flu5A_&%q1R~ABQr?5A04-sT&J4N)RYm^lp>fTZ(&(;)HMo|9 zm5ZTJ@vBZTvwrmkIK*&K2)n?r`q4xzK#lnm}9mKZOAFe zl>O7L+a|~MT2tu}EB_h9FBrxijo>BQ@9~h_RTDlEMGcdn7YsvAR#aH`R>B6TE(ZX2cxQak@t*A;y{nkVf+FOCKXW%oVkV-?pw z>4qeop0#TLQ)98g?46kE*YWi-Vn~&Hq zxTE+3E@)~rYD*A09oP5X>hx*O4|wWgau;V4rf+#u5<#&&NIQiV+IlETj56TMD2h;e zLyzL63z1CYrMxzf`K|JC8qJB}*Nd$A*(8i3K zklqov?_4*}T@cdUXbzR{=2q1l#QgtDjI3i9- z;Qjz%ivt`I3zOZlf*4j+-8sH~dQ*(%>2goF6P==&zAf4;!kUP^>k$4ycRs*E2|tjL zT(%FRG&m123F4d2z&CHs(vwKiR73;@oNjgm_lE)JJBw_~mDp;XanFO1c0%ekvOMy+ z96h1pT# z^lig!%W1$Qgzam)WlAY~?aH$@R+sKLfinsG=p;mN4!)EfzerxH+xX8=73v5Gocr!L zwY-EIw}tZ~dA+VgFICfVMmwBWthvR>Y{gqrsvX}n+MJm*`( zZ#*0sw{9~cB00^=IEj3a__}BA@fyiM;xEn^e-W46@E(@*a}3?rq<}?zS=2o{f^~Q&%n5kK^cDE|KLz$$X(ZZj|iaJHYg>byyN!#{xGjN1+`|BUgpi z^Ua$x(viI{(4$K?I79mvQZIQ6dIR{y$8A;Hj1oVkPsa_tK6(rR@%nyuyrR%(%hi=K1JopyVeH z-Y^c!TfUOt*~muL^t&^r4!6UGGk_L7*8GdfjnBR3=u;;m^1`qWwMh7e$0L8+c1ak% ze#`=|6`r8y*A>>%-J9~*UTH49zCvAGA|&F|ThD>kxJvd3N%oaoDG!aY#Wf6}f-P>; zpC{TBjL*Nh%W4pNPNalNm`6{cw}QJe3(QCy*ZCF35pOvKg5}2lfIEtE=6I?GHMT8? z33}p7u+YZ2aEPVblBD^0c6Bxt(?~YMyw4!dlX0GgS38cp&gH=&ZSpi~BV$r&xBgI$XO^hoAM1x$i#A&uD z&1$#h)@?X{{6HnA>pP#$x1NC4f3QaS<7qIV1UHLgYUv&B zLCD+D_u+cuXWdj4HOF;u<&oK`P`u{KWOwjINQN37URdHv`@vo^?$r8k4Zo#j)Czgi zTpYwI;;>Uz_pT?tBEol2g$hg$FFqu1EL}_~f@njl-pbD(nHD7D|3T_~E4XovKK?UQ zr@{nE9gYJ#Op|>^SqIkeuj%Y*z0O2@&8?+O6U9@IYAgwYxH7HABIhaD6jslkCxJ;g zcay2npqZQlL&R9!n6aNGCzX<}+;&Exz|lee$dJz5BL_6EUSsb=R0Di(;)?tfNkMa7 zhan=RuI@zCDO|U%DE>p3N*VsO-enz`f40c=4mG|3O2uo9;KRi#ci~wYILux|5eZ^` z!i(elGGGzaX+?mpvq-a}JCG@pyrX{G^4&0titAZFC-U^K<3i78Bn~U6bTT6YIsFwC zV+syg`@9m)WxIkL3+5DoG?@J3aQ=P7v*Ge+aTwQ4w4Xo+U-=0Uodjzio8BqsI;zwk zp*070InABF-xo+6YveyITT;6ZU8=nYa&i>QIE-k!`BP@L$ZupbZ;kE*l;d#5^eFfi zuKVsm$Jh62er|=wHx&Cj{gp%a9LC=b{89RBgaoO|U8n%klu zGMf8X<|`%eSVj%*V`*;S1xMdK#^H-19dc~A0;ih?sfqG+MyNTkvG-kc>e1ah;rW}} zACFT!kk^tkT`Z0hko8Hm9p5$qA@4@m55XHLara(fYwknVaha_3*<#d)1$VyJrz3w$ zWP=f&vQrA@=!?Pm-

e`pTVVu8G^U>k;@UL`E13ZX!y9K*o3N{_ZsJ3!wUbmCdk5 zxzoduYJwA+UTKmI@e){J3+^ez*4$wuzdem-eQsY-V2W490w-8&oZVdkE1M;Y_3ZZr zV<%=k+2JN~2B>(v2|^x;(>|ire`jAo^o&WWl^0Cqr0Ex%U|8k(N`S*_df5pOR_rG zGSNc90{~TmFK764?at@?mIDyW;P^B~puR{2bs8w0e?KY}K?cT!o9IHriRl_a>o`9N zQR+^(yJ&#+-4vxccu8DCuS@34BTz5mKe~ELDfc!-`~nw9jcc7C76f~`+rP$zS1vA7 zLYi7M?v%&#c%t|5?mitSRc9(W{C5N2;k~C=_DH_gv)iZ8Jx}4+c=@X@8tpQdTIc(m zR+LvG&>H=6e7z&Gb%r=0&tv>UROI1>Y|KY z?MZ*%8L1`Q5fdECt`5fUB+U!2$K(RMkLwgu)TfI3z&BATpBA)k{3UT}q)jf4#QO0o zg&LW;`J%n4U*rDroym^RfVrA>!{iRla8tbFj zlF;V*hy#8?m1AKxdZSm*&+P*7j8bepOL!bPuxG7 zamX5=_u%!pJC8IusVap?Z>|Wv&u3~$QbQ#EcvxY1ft43e1V|z{%Uk$cLnhPAuPJC#~{&9>hXLKl98u(i z!{^wczq8N6A-P$f-={}qCVvFD2$rw%b`qyY?8y8Bt+Hw&)T|fEn}Ga-9Kno`?+3yo z`vE;MRAvU#MijW~k?@sFd49^|5cT!Kdo<5gm{>J5?g3mE9n$J+=#@kL)-*06GnTH3 zMO%SZ{(ZXXHF4B#3ky|vOkYFT$PXxxdrxH{tHVetNEaK6*~G~TeSvmO@(3a$5t$XUeL=HC{0e**8gRm?;&Fn zrKwZ?zJ-DZPpTTtml z^N8FPD6f+we2yOi8l4cR<&5H`dW*1F@G^y#CyH%3e<>0mq1-EMrAEaaxLs;mrTxKnL@d&lo*vhJMsDHpBtJ*m+o`2eyX2lH>!H9oC! zJ}JVd`wyN%%IS2c)?upp4X$3!^w|_~s<-0+7sB*&WW`wFJz%p%@2UjrX?<3V@CIdx zC&8M8Pd5s*>i;Un)nwv_;FTjLXcfiYcg8?TSw#P&EFP<4WIp`H7MWMO67Q)tHAYLw zP~BN;1#a=TGG`#o6-3O1VN3tukz?gyX`O^SBT6;xoA^t5w!o#KgpQ)<>lttQ79ec6 z6uVzCikfERT2%X1lwkpt6i!$z$ug-r+Qfy zB}M%#yyNa5y^*E1XGh+2&g+ZL{F1_Vmc^H-F(CVIc%~Qj$7#o~?Q$+useVD=)*wr* zlXc4AxMc)roc?-=Aap8jLf|PvCQ)3NX=13$A{I7 z2&ZKdE9cb0>dMCfVI=-_*ZNDWgRFD z!=hLf5qV-Ht@mQ&dQVhhzP<~JBAma#)XL3Uf#lq`Dai`n!3hoJ>8S3LtSrxY6Z{Ut zuJw7XXTD~Br6^L%0t65{_c9c^F>G+B&DuQwJqcEEC4*#6JiQ&&#&sq;BoX<0lNv+- zBEr_P#k2+7fCZ>6_w+&iD*4xLX~8=q&@b66xnKXm8*DM{D0%sbCti&0+yl8GsxlW2 zL-|AGbdr~9L`Vzd3)Jg$p3H&v<6I3Aegb8an#fn^2$D9`^3RGM6(g4}AnkU3p{_%A zo!Vb#W1cs62RZs^KJ@~uqI4POA{XX6zDvKL;N-R~jA0_y9qGZ13><4kO*7%Fo=;!> zoWo{G1%2!B0SBZzsE2&Ih6MU!*Zuh&HXD#(vPHw?X|-FtS=8qI6sl&=l1S6PY#%8r zuhpGL(G1BDZtdUU=`;rmKfZ2SLMDo%@1|XO-ufr7p+^QU?;}+gf{*rCI=g?_9Yf;A+47Awqz!XMH&h1iE&$ z6n|vT^89BhrN@h@1rC!yq<$$7K;Q385m>}sh$%y+X8G|{xC^d;9X*E|CKUAa<)SWU zs=3?k0X=(b_#p%Kr6ys>fWf}k_l~+<>tZ&Hup;H)Wl}f4yEePZO;bG>?`hJnlQ*kJ{+P+b@fD?QFI5u0zL0jKwx1bv}KWx;dGBe z={?NO&hsQ!)oliT5X$+9lob5+$GaESae_(Ixt^VxPVK_r04tTr4bp0}H9L4&@KFrf z3R~r(8Z#c(@S8H%Ql0KuK0X@crHjY6yi)s{wJyRY>7*i_RF0bBCMi|(mlfQqI5|3y zwGpqJVvqxZD%V4n4dy2Db&q6$n$m+t(jdy!ksbucx5|Tar0|QAQC8!}y4fIh$8Q=V z%rMdQECqz2DXqZmp6RJN%N8x-(?@_W@4edxa2#05tA0OGwM2`TztOcT7oY0*94 z=?(-FYuU&jmBXPRyc<(Ieexo|kl-{uM*Kv(`2L?Y1-RJ+)s14n2Tyfj=3x}ozF`Ft;^#q;xfmbfu2 zp3OzLfqVDTX1OMp7=U}lHK$vlE|@p}H6Cpj+NBAfP&?5K!mII3Zp`H933D>c{1l6L ze0_Wt@5&veb@A7YZ6>AxVl zM*;Za-Cof7q{McqQlPaBHXx;T+K-J1DoDRZW-9K1?PDe{aPj_S1tY6*e&Q-D6E`D3 z28zCh8;}KDyAXnA4Y&>E~ZHdfy?Um@RYEiNOl;bkm zK;{~R!{IZUzs7Z;e0(eu`w+4RZ?D2o4C)^i?#f#@7P5WLc`fAGVQi$v&BM0Am7&yO z-_{q5u0#Rt&t{<vJICKR%_)>e!RZy|AXsV;6Hn=`nV z-^PcL3x%_KHV>oK%X}ZMld&3uLj>Q2<;=tbY^a$<#*4#&qv%&}AxK0JO zsC#o*oCi?7QPu%1#lpO|B8F;50uJ)yyOqr# znRPzZ^KjfRZ8i2x_bBHvSBKLCY@rO~4?)NQdq`>;DaDl93-!YQr{8*|{)yw^w z_)oIW3^tFn)p**6?`uWT;q9U5(|t)S4f(4DU%Sf~*`ZhiyV6;|dcyD{!zPUILEppC zv`&w`?^<6&9tPuc24|>~*NI<)SIy-_?ZBBQ{f%_aA4se|1yfpOqo@IJ2akT6H_~70 z0~z=139HpW&*>o9-U@7bPiZbyC>_Q~3k!*H(yx`_RL8&M=qbiNPLlu5BgPK9@ui?S z+`=l?@{FVK1h)zy6|NNJ(|s577jl`%Y7)H?9lKC+Tgb+Xq$2dk_FR;E*cQ^`nzx>- zu9dHw<}c;kwGKWostr<^NyFT=w#Ttxh2FyXD$Sx_+lFli^gVtY(n`HmcGC^&jxdMO zvgkPk;yEHk?%3b!A-@_U2#T4)??~**8|mDs(oWa)o2GN{EmF%$3B@Cz3pB!7sB2P@svN#{v*aaV844xco%(dp!byBf z3!DDM2t#RxzOLbK{>VW~X?!eI&pR{eZ^ajMg~ppW@KC-|czJFDe(>{vg@Xf0v(4O1 zM&AL?r4|x%+Ps#Qn-LVb6IH_BNPi+}E{~0~N2^gCi~uUabqc`=mN%~T^jjPwC25J? zvgX5=N!8O}9c7QyqV2Jq87NVtB38r-t(q5Qt7<&)v#|?_+^bx|eN^=CWyzWcCm1r! z9fAvk@!fZ`=ZM-)5`N6RcNLZ#(KzZB=T*IiEsC3iR-{NQ!|}#Gi++&mll$McAZ#(0 zLDyGR1xzW5+7U^-N5xz37(}HV=F1DY4DM7I74&s2e?sOgb5T2tk_2Jt+?A;DO^)~( z5Q6_+fGVP3Dd)fLeDgKo(zoZ>D^FY#+Sdy6zXp1oXqvNd8*Wv+2s&vYn}@+5a%U2> zL=7tg`Dr`-{+~Jo_1(h9N}25j^xgITGa8RCp7X+Jh`-RstfD^f@6ayXI@1_Du7sbG2hB@*<-mekj}5xBq4^B@wF}b>PFy%O^sz%5TK+t_78z ztIX?zusr@%z|PsQUQKU5>iJ=Ax%_MnE2(hzEHzg7%@xlG2shJu-dkQuk9W!iA7!cukhc5ifWs5SSPZgZLg zDYY!!n7?+GUOjP34&T{@h8M2e!td~!3Q3_WhY}9yy9kDaW+A?xPX!&SBQc~?r1FSWcj-s`-pi+NJ$#Gv8Yxr@|ThWli`%N_6??u8&EV750K ztv$a9oypW}A?`OQQ6?=!C0nAcq*r>xK3_XLZ0A|#WvYVL)|JqARwnR}7stW%rQ`cn&zlB1Vi8&?st z(rW%!+*M{B(g36H>BeP5Fsw278a5hjX>>ma0i|kk1VWLj4K*%JUNT0N;7!JVU58H) zSoY8uBYYyz3P{npUM_i25ZLhs7*Mj$xPU0Zf)DWAZ z(QR}>1w9|lBzk;2)C^*8_#SwcA;RKiX@+p95=`bHys3L3td9zW9fe=+Rn%nfV>xAa zP|xXy_>gVEVPr0Dhh_(k;nB@##jvxlYk*MB(O0$y^&IrpW(tQe_1X4HQ*ypgWr43{ z#?Ue3m_@c|(TTlw@ARCiImmJ6Lw2CZk1&W+yivs2jHnD!ix-4RHDOt&`>5c%Xn_0a z=89pcHZYSp)}HFwP~*R5j#l?L49h?<-1aB1Dzkz=$4o11hatbvoGv<|e~hF?y@*aU z@S5YptPYsWAT3o4OPuoD)dR)t#Ktvq5@(PbAgxD)+}Wt-P{TpicO;#?ubTeBH2QegoaYKA+$&+DkV}OQL-n?Sd!>NDTHh@%F;$zwy_pZ7WUeK$7STq2S0swe8RgJ>a4wEJ)sJ46`y zf}W89Vj0^TQ-#^XAJhBBKD)7f&#VL91d%0@QTQgp`PCAt)gE@89f27vt5TQxcbLnk zr0h?c9}o@{xX@~$YQifV8-L#C;UJ}`5;}Zb8kysfV+OCVyG@pL;EhC>>fux(NKqJo z5EwX^(Z-=y?fpoHkLJKTiw$n&W6#HRrR4^h#%mHLU0UJkgHM%zUfu*Q=+r<$NtWZ_ zTeq7YNb)^sMIG3eiDo|z zTAk3QnXS{IJiMqPMAsTuz%aCjf!Y3}*f%>cUdzB6VV})5ra|~Be++zH@74GbD1o`6 zCH%RYjSytWQ)(iN1cgE@X0QW5Q1&3(!hVvt!=(lEqE9b}o+#k;*%DfrIriuD-G0Dh zQegfW1k~?0J?zz;KE&a|*?Tl(Utv5aocV0cSKGkRG5;~(xkR$>YFau~JZFMD zo-}!ap1*|VCS9OWlirY&-Y*KyCb<;M|C%r0^4AgPz!TPrVXehC`0?{?IzC;orKMW?Qa5A(EiEQVbK8R5V zwSb0FM0D{VvI)Y)YTBlQ3%&FFyO_U>C+EUHr)pLViHc~i&hrF)_x32*J{ z8d&Owptl&Hrb-iX&!;H|KE^Gj`FVq)t80?u zX`?qWElU_x5j{_70Np?sTu9L$A5uZsg7{F%J-}u+e|`)Zbl2qa(5B`%!QIH^{@-oa z(R6-jZCA@r;v6x}QGdsVNsm`0!W6ZK<%l>G`#>v=Py58N0>|K$q*ykK`Q(V)eC}~a zQTrWXhW}M)$ol3vh0gvaVzaFP_#;xzx3n7vnsuv)TSh`D8Lf0azW{7 zgn&D8Rbo+`+7+JUqHCGX-9t8gy&XwaJvl{5xe)L=5E17-U^SZ}vJgDDiXEGMV7=Qm zN_$<3!ucHaNj06zx|3$zq0*H(UgXY zs+PMv{bLyX9fvIrJAhuL?v^b7LZsNco&T~0fKp_nP#$6agGN+LPFwp9s!7r9q+P2l z;MG)rXDmCYR%bEd%YjeB5{v*;t@v4=!D4dzyA;P}Py}Mxv9kRV$sMad%;4oQl|>Yp zf|d7xW2S8Pt{H1WF~$+vanbeaY=4^^3h$sIJOMZ+8HV45RCiE+Bep6V&Nd+zhU{WK z3WlRCx$SdDk^+53h-&b<&4ycA@kUsRIs?d(`Vq>rz2{p`a`_1Plsr2N(DEGdK)95F z6hIjgr93n`#sI{YQrd^&H0-&cIL;XVmI=S$_~dPcC?D{K)-1E6${0Xcr~{B%KvYMC zDr|8l=6GVhgDp8LNrl(Ph3Q%jHECW=-Qzph(Ec7v4>5{vE}4G746YOXus{5ChK~_} z%8Nf_-To6P+eX*XL`YWSEjB;LwXFPW7Ki}{J{kLsKuU|gyP6RFT&C5>asqHQwYyT- zeCVCoB93oSaJzVBe+i(hTgp(u$_%T|{;ZieCE$8@dy}prW8|kJZ{Beq%fMFMDK8}! z2H-wr0ri2qR3kn@(H9<-SklLEaQYM*FkW?y><|5(Vr*?pF2;H#NkjcEEv)S9(-qVues03f6X7iXEn45{|4JZ*N2V2jR z3U5Qozl96$g%vo;IFTpif48c1A{t4LC#w=JwJ#&L_jnZo4UQFGIJgVgmqVtVQxKV3 zLOa-+vK=;Yn2UZ0yToB%vJT}2Ds-wIsGXox__Sx6AZf&fu%nu=tp-JL4=?1wU~-i# zCx^ieu}(z-qe#I3YNk$@12i&cPcun?lmm7T%2Ks^LB~kjMBZ@?r)H&Gc;)+gEW>@R z28IpSi6uP$mThLej#jbuhq>MF3Xu`&()st$zvkfh{57odMjp41cPC62djJJC14XM; z!65R5SZa2RM~Dz$AKZ5^I)bjc=;89P@9kmDits|c24T9ak@;fjc96(+ICzOr4j@Z~ zF1$a%)g~Ukvg*`e%M^k&LbWdfoFPZpuU1lF8Wntz1U%c}RS}uY$@q;N{$Q)#s6lre z`bjD!fpY}aOcC49FQe?m^s7*bv4@G#Q|b#Z zhF9zDOf{ZO`z4mz_BE&}nGIc^+rdBp#u|iu0weT-Cr*PuMHz`_U!SrRYw_7ZL zS)>oL_DMeyQJ$`_fQB?AB1$x=A*}Y38cWu+6aVqul~`DxeYPH=ST-D6>oqTAoogug ztljN1;LBB+V-XYT)r7h<6KrnpS$e0`kC9R&;w^RS@PW$6=u&ZaW_jTG#4UGCS#t^T zZ0w~a?qxqKmC2w(fdFMr$B>|BZozh{3e6!$P|K+y84>_i^9o_Y!o&;uV9Om~5&-g= zra3WM{mBkDh0#p^gJz#mHl+=4dqISP%7haDBxDow;1}Z^0 z=llV3$l0ccJ{02kw>Pi`$6@T<5OX|cDeBepT?VB*={8@UBr#{wlpL->!o@anr5lOD?eC0#kY2+=Aj54}Ct``7Rf<*NfMY zyFQ)-B2#FQdNkDB_k6Ps#eQm`V{zg+_x#VCOQffGM{vakjHcjcx49HH8Vyf5+a4)& zRQkvsyg4O+0bmtvyRmz#E79s3$T{pc7lo!`<&Nt_k~2}$PFgeMRX-ESQOP(XF#P~K zj=P}M0DkaT`Ns_85*Pq00oZ~uG=)MeVQHS$n|yCJjLo3_IgP4JH62Q-ZUW!tlSec_ zA<9itck}^A0USrK2zY%2h?^*BYOn>~c>^@?a0$H4Qp@2QyjAQhn>Fp|v*Pw~fQhMT zDUbqdURlIze#AR-Lj>ac613vE5o&zJ-pThT7D}5O(^N$rPM~=GpgA&U0HZK5^x5@5 z)s6bP7pA=R+1ob>93+jlbcC4CN4tJ$0w$)Uc2~WBQ98YWd0%nLw(PL)xn}WD?5F^+ z#^H=kj>T0`-PzSVHfC4m>IUybY5{Gn{rqM89p}29gXrc;{2(253k{%Z=8sN_`ny+V zsqlQSk(ntHww#*c6c!4WQ!9Z^IQ-@y1kXmG1MdFYq3hn7U2h(0{>{|&%MPe*l^tMLHn`@aUtyuHQ%id*#Oq_4|#>`a7tpw_Uid>7Rdwc%hSMOzK~g3a!pbJ zw?5}V72c4nWi>DzaSDDKs?zm=&3UUHSr7@rfJ)C`_|e8_LYT zCyVgG8d4SDHW`28@9+gr6JQ}YBbUqyGOWhYg$>B(Tc&Ep`o9E<0U0EggV1zqflF#3 zoGkb%4&4CzDNGz7gY%TK(iqL0j09PjTy<*h!wjc+3M;Bt5+(sfm<5=ac|K0d8}o?f z1Zt2U#x4~RAYlQ4DnY#6i=h^XI?b}2lOTM0HKAz)s7SpLZL!T(tf05&fyc101iZWe=rjqlp=)w3?m}YgdF5f=uD|Aq8Hk0_Fa>5+mutMo6kfd&&yKwx7r36ohZ67&s;GrvXm~K!iMXZCo*>iejS_Iu_+i zXhs7~kPP|IB|WgoXWMiCs4${TyS?2q=~X zTkvi$eia9W`~ov+4^cJ9&EJ0Bg|s{g2V@YuK^iH4`OUJiT415{>9j||Lk27y8=KEV zt-1CGoR7QjU;+7uD4Ln?jLW8zEyQE6nVGMjRAN0sb`)ZFk0e^SH)kSznr@qL#4kkV zo$4OaDST{Z8jcl_+K@;JEt2rd+xubS?9rD-pbX*cp}}heS5)X*fXi29SrAnTFJM}V zdho%;`V=JxbFH(Ruo=C?A%m)CNDKe|s|6fN(+y(veWT0Cy=6dkWyXK9ebWctu!ETN zT!|vIW#AREsO?gMoJG>R;SiPzJ?7# z=)U$JK^sGc$l{0-%^h*OPVNNx0Nr7VSnHGH z1!tQR9vai2n}a2)YnaTc|2M&1tMA~RGU!kxFroaLcye47Vyr$4JD9B)`el>xvy%I{ zU%^P!=ikin!4?DkQjC60Z!6Vdd!2nTS$4L?u-nOcmLLubB;(k6{vVSO=vQJCY@@LM zOAra*`0=@8pSPJNw&=*H*Gi#)=}B~xBB{Aop}_cKO&=^I%SMWlu*v<2CnoKo__Hmc zCtsdhoCN@M0qW;}0+QWK{D$L+?>EBDS3OY%y0+ABmfZf6fBb$}aKk}qbPxCskX|gl z$6!y>^gR7l2=LW`mD}F%02@dmPVC7A{BqcQGwd!82Sx97TxQu4WOGjtqe%ggi`xXp2@%#aX2P1 zc35oOiX596*0%H&t~y=l33SdHl4aHWn{PQl4Tceo)Cv&APcUMLJ5`fH07qb97K$LN zOC(??iM(LY!xagM(?QK?R_6ZorZ=^;k?I^OkrRe?NNY{v4Mq87u>|~V(I9+E2dcEs{-Lu8 zIClRNAH8U*)zAy0-ZGMI&G}%|9xD7yIQ~2xRJ9<2=&$)q@va8ExgRpW61yhHL*>?qHJSFGwDlWoN#c05 znppV0c$@bCP1k}@!ytt5P_ zcVN~zETcfVefZM%U?{eh!_mO2*2yy?9XijXfyC7^iYsT)e9f}8y=A_5~09odbpr-a1gQ4m;c&&<|aUF>fFgk%N;ww zX4V$iw19h&3!n^~ZNW++I5!^yqytFJP3tjmnKmw!CaGbu2RWRTiMsCq&nU>^G&NN{CW5>@xiQjs1M;(wFkf&HAX@1CkS?y&3by%#pSCjY2v9!gSXCwAd zlqYfz!<&Jn8|xM`=lgnA61g6>uD zQ&_Dm-1IweLM!T@Ii*)@IeiyO)!XzNd_A8^-HH}ZMuKAa?^WR3_s#d z4vvsVYTR8@T3JY+HqxUqXW||Tx-V>6>@*)kr&NNpoYfl5>VV}VU(mJsaCUH1@Njam z%3Tk^*=H22!n%;gKA4;6@l{f)A#DEX@+;hzs7_`N%v@Xuo4P_N+gyQ4K}v2k#oE0 zfFO8+>B+GnjAm4Zo)D&Vf4G3v4zaoexLL`D=}AqfYVPD6hxdkpa=mc4p%$h2zwKBo zmJ1)F^2-#Od+#}4xq^y|^>2`k^cgh049x7O0=-3_sP0&&w3pqFRr{ICF%Lr)fD1^G z=pIBkGUeq{0u| zw|VEl*LQJh;_5rGr*+isjm{ETzceMV$zSGt>Zk)W+<>A$@&XMUl%WJIL>5iic?aEW zk3bnrTQzp7p<-q3i3PD%H*wORXqRFfYCaL&07`8#bxsdh9#%bwJ?~~!Tpz|%vPe~e zuzv&SI)ep;tTZ4VP*^@+LJJ{xW8C16(^u4Cg=w2dW~sHh{kM!dimG9@!l3YMeVUS0 zO#u%I=g_CUpvqW`RwgT=@Vz~lQ_!RT3HlpEqm&}39y?BQ)1Mo|G!%yDe0bgMUWj!+Mkq&i?*tD7 zVU(ecror4yq4LnW!^>E#4#5$>ZKF`z&lv-sKi`@Ns2guL1WJVrO89B&wQ3C1unbZ_ z`D5fLwDlNtD8X)fhvNGa93auN71|)&6ukK!JI}Lw$~qAf(+?I=edEurHp(FbG12)SMB#T+fk_bg1;S!)*4;n}FF2JVnd!n`H z+H#33nDhdb3dGV`Nv}HKd>{=~ViOkXXaCbdzWZmQYZlTflMEkTvqxm7%*~EbGzi(t z9O-)*z?&;$F6#HQfnxd!vopjcn5m5DROx7OM6mRa%EoYx^afN-0f7QPx`EY;WxPnx z^62aU>AD-(dvoT&_7nxvYl493Z=_*U9HHkuHJ}1!&)Qf6a6mqR4m31;$tmCy4kx{u z*wA3#@@mw;A}+^&YTOWk<;6Cu%6?o3aA!~u%u+!IdjA+c5ejTUf$U%J4gEvJv^eY! zw!La>LZ3BCtJHZtKA z5XDe-I5(jAq-o1DBCx*o@)|W( ztIxv)8@@ChKwKz6b|W7)Cl!I6lZ06Z^e{LB;8og*4ihQd^zn?4uZw&Vh9Im?GV?dJCrwdG8(1PwLMiu4W`tEzp8QFD$z@3Bh} zle$p_0*@k7})Dy{7uZFSmh}(>Hs5dg7mI+XYlx9;HfPt(}fCI1Xck0;c^;Yqi) zhcvGdYla%zvH9@N@v8pOnG^ql;n4Esqrqp7Df~t);ZTc-1b5hQNMqF8)9q zz%hTBJ@*DDt*JwC59C`YU3-EdM!~^A%QUh2{Yos@Ruf2e8ss;v0R=MX+`x$ESVQ01 z<2F$Jb7ykT_)Z;DSAJaZ=-H~WI~-S1qax%sSgw+7I1qhYt(B@RQCJyT$@#&Fc3HUg z!Ue{urn3P7@7CKTr2mj&pW2;<~1K~L;UB#k2+V+DdWib>q6$kv|GhqS;aGQ%}9kf$s)H| zGGT)Wzgal1r#NYci{Hm|uABdbIZ+l!gqMPSH_htW55jq}9@6U)nBsFn?K zIlIF7SDz?5KRD2otggzsQRkTkJAmJJ2say4jTZ!Uu`*SZ3qMpl60-C2iQhEw^q?FqiEWp#g*_{u$fg5q)N>lY&;E3Ze8-s#mpqb~iH-v{nD z&o*391c!URnr8EjZ_B`eFuoWs~y?V1tnPfR);Wzj#u|Eb6{PgfKX5%K+HOF9#kpRJt%1gj~k z>(9dWmBq39q#D0-5|~;vu}|$d**QjBlG8Ug!JPJMW!| zz*JgHf~yiZN?( za?Xykm)IU2krpOR5%l3k>uvpHAy1Fu6?$|SoVIIu;wm&z;I%FzR{USUZAxA2QU<}#(=69pfQF^f;O5htAp z%g+vZcBVObnYg$=cJ{Cxm)R|S4J95BKP{90MVT~k=*i{m7ecW%-U?w6lh7rOA_jga zpv5h<=l;j`57|wFolzWYb9`$f?J~CIrQIGU7pE*w>=&ft)|c#!jpJ$C3`!#^j-GB#TLy=G6|cDQf2PYkWm85zt3h-_j-E)#Jamm(%NdX^ za2UMZM*|pYeEjVs7W=S^(${RJ)HYrgM5nkR&)6_J>Z+od>!*inGhioPTnz9G@%a9r z9BeBlE&pvPdhUneM2Qu`DV2_GQ4N#BtHt)1?$CkhIC1fNSY%}7fekycFmcf-J{OU_9=8;MUA4`+s=u$$|+`^1f*;{y4BgH#KWQyJ3Bb=6A^gs zd0|e5<=Kh6@zlopdNu5%D)P+3%jWzn!!8Q=sZ4My@OTd#0E5QgR+ob#SR@RYD>hRs ztj7Od9@0RUx-WMoWt)rWN60VV{@9vYCyax5EPhAi#cH-wnsh2(g=fyW22?-k$~KF-|q7@T~~bYunF2%W!#cehtakUCN9yZC)}q2w4DJ{F`r zK1w=2cvG2@>onni@iN;jOHR@>D5EP#qa%Vo81`PWHa1Qb#x0xhVwM-tmnXbVP`Y2> zJL@Sw)fBOiJS^F<^u?40R^448NJ$UL|GX(#!^y^6Uq;=gnW}`@bwgehc4n6hjg1Xc zuO5Y@CHS$}hlj^X(J>3chYd}z!^b?^xxXRP!d@S&6j^!uU?D)y!335$R65-1*Rtq# zlI$2NHYA2!TYXZ)5@l3Khd*om38l6J*M zMI|eW9C3xvd~xN9xJFG(!!jE8H9_083r?`+u)x%y&oAsu!dx9~HYd zpy}*!3Jn&`Vk5gtVE>Gp6fasI%Wx{Y4I?$(L_6MXfR7|){;EDV$j`4BBYyjKJkF+B zMxOmgd56K$eBqtif~wj5B+N32IlCh@rOupzkn(r~JZ&m`19F+Ww~{y+j#|CX7Q)bw z4Fj%_M3+fvzuR#5Vc3uIqo*Le9SYP9Wd5;=iED3v{8Yt))h#J1>Z+z0tPE*-|Eg6G z*XkRb>SC0DKrP^XG|!PRe7ZTI2KdmW1L3@8a-ufI#)luSBZ8BhC?l`cP;@|$RKA!X zk*A0OAoP=KFUoV#XM!*~=u-QskwZ^0)5KB0FRv*EXl#~X{aWosXyk+JzC3Yar-TTW zh^Ib15J~c;z!%r}AvdU4?|Ks>eqY^SwDo@N?S<9)m5k@blhO5F4`hz>}h zH!*W|1Z0v8ma7`b1pSt`pMZeT0bqcqdwimz+`9AcXx$CTh`$}L0m%;wCYOy%+Nue* z;xkWB=tXG@iP{tmQnqmW0A4!QuBHK%(6HPSldSH0ntfWA3}8#~*X2K=9qqocZkZdv zl{U*(d7DGc^fm)>^43cW`T3GT2J!c{b67zz3?HdFVCc1uWNo`D@AY3nx(JqH#3k5V zB1=kSOpyMnDnn&N9r1*g$#W}i--0B)2}+slkf^LvH3=f(M!Z@7Sh&<5CTp_ry&c7vdxH~=yK7oCWYEy9K zik61rf%fl)tQJD{iZnZMr^`*Az#BIBmbkxI&Z~k)MFSa z{2(R*Ip=_(@qzRg5PWCM-y|#(SK-=Lc=dh!O!5@sTKQqUSJi;rG18xP`BB!aecc1aO+h~$+*)&9o2gB|9tCR z-igwSoyAXT3oycu*97nK*>?`Hr9Af?t8ZQrx7yR!=LppUne{3kIi%g>-MGbB0F#z4 z0{*-V_*D4ii%RU%);#y|p0}bwl>t^J{+$~~Hc;3o|Iafny)z6AUec5}aZF+*lynOx zvIan!qI#mN?SVwbc?Et{LU~TiMBR>Fs9%lN*p!77HPy1CNG3IkRumCSVLNOq{wSlqPKGO)oeY#{8i!!%nX<(I~$G7QKUXCVx$EEhYDV zh$a7B=Vf^rd;6(snY$xZMV4)Mh2Xgk^i?qiih{cOh4Q#4-Y^|*HnOz8pPfa|o~NwO z+#M|}f`e3(_tVIsy^>I!oR*f>G&#)nE1iKac_*SF&0;qImVp~kl!Nqqbl@_yj$;x4 z-?aXR>wCL0x%6VzjI<7Za<+$@YWn$s2-xS|ab6l2wEZTP2+%I)uy0SpDt+sPaEsG9 zOw!>dBz0y<1v!IKIBc>EOJGW4<09EBgFH=pWtuXPS?a zh`;mJwg}SSzBPL40mq}UZX2y&Z?w4<>t#(uapi}@oA~*24%9b7n;|xBk$>n6{(K+3 zE5mOeCqpth{le8%q;B6fyOTd)-_Gwg_|RH%jN+3w9}(NF%rL+?H)N%S;!o}CUhoDT zNIV>So^^=_|5g>!Hv3@2PkCxrF|Zm=|I(iLsH>O6Njfas$AB@;&B-`%aV;fzuSKF* zbpMF~U!pBRn3s0`G-4qgtCvZw+vd`mxjPlA_Y(Iu{#C1*8fK{CO5)ws#2eCQFEI66l>Y51C5EM3XNIi>~y@)|X$7-QgQ={w=?^>_pk9976LV|g`C#7BR}FA`lT}Y;@0mqj)$~n)avs8M z1ROj@M1D-&aI{r^kwIsruRg=WfX_1fb>=(i=WsGojzz%nmDm{{IAF<3Tjon8p5Kl9 zM*MdC?YMZ{*&%k_n3cYU_5B81dPmjF2e*pE`D8dpuX%>=Q!lvh&w$tapqkFyovyta zBJs6nC|;>|Tvn@moD6{nK5rgunvRmSfxye&LyUGg9~k7ePCncft`P^KKQYfj+c2N{%@QU2rMjnFFYFd>tw+ZnQw` zhKmkz(SZXX8F2 z;0LDs@C(VTAGPw3+Mv8O_f$hdOblpu++OO7d)($s;#N)$5tdj*B2&jn8AHD|j@)pLJ-9;M}x}23G*x+!cYsOM!_qkh!JqSo3KSJx1Z%u5Z%Efh{e? z8H_SN?0m2ht6bdf^9pGXeLNkTe0B47)hF|A*@hlnuL(6#X|mk^ODA+br#OpNme{m*knq3K@$h(%HA5m}xXs#PtoT+w?2P#YxL)8YJ?quts)fy<{U< zyDMYrY4F73_jW&cXzk3c4>r!PBu-zoeu?hDOwPvVT&sfIy^eP^{e_Q0T;t4nFT4Aee}flDLa__SE7*wF*)=r#aR>{pl%0 zX?x(+?Hjk@?;~_l_knav#i<)SwaPtnIe+ygKus;+Q=kg>Eoxo<;Eg-nGn99-K0lIf z;~=2#CgYz5z!`2oBMQdOG>wnKjIEMgeQ>M8e)FTvc#FGF24Zhw@f!E#7h~c#7|W1{ z@!^PGKHvlaSsA;$Y^G6s6lC`P(Ibm!(a0E=HsW0ry)8KmpBQw{{uXyh$@u0JD$S39 zqnV8l60nt47jo!?Ti(P-PU1#nJ z2YE>f`0Ych=L}nAbtKLyK|fzm{MNb!ZAD6~7S|dn9Ii7OF+)AY6R;CY9A91@S9?3I z=_Usi;hTj@3V1_;thmxjDiI6fERHVtE-u(hE%ws6?)#7nbbPD<|??huW`>gd{-ef&=*r7}T(y`AD5+rvHDgr(;Q17BO zr6%{Cv$_vN{0`#b4%JZ!oO(Cw*2cB?d16VkrMV(_KHwJh)mH9#>f@jb+;kxi0Q$fQ zSmDOe++CJ?XgJ*VU#CLzSML<2P(kYi%*Fq!jjyb5l^p?Y-h6Q#X|@{G7Lsgqmqmrt z<|E3KVmTfd3#&5`SN}iJeC5xeMTmBpcQEUH(i*?{3wL6x4skMkv?n6ez{^j|op~|z z(TR9fQz!+=b8_AwD%3+-iGu>QoZYH$p>AI%^s`&w=?cG0g3hrp>5O@`po~5Df7ls7 zVj7U}UFXxDYm{{L>N;Ok%!S2I4x@ZrzgE3~z-}4vzk^d3>+@#~IhU?ZlORRbX@bh` zVg;(vJ)v>zoN%e4$b;7idj1@?i# zR*67xMylejgP&M>gQ$pu&Z{&;_oAbB_-Eb>WA>|sl$ZS$dmJ?9%SQv-b-nc0_$ts- zNSuG-#|Z}T1Q8D9(o#SP0hO-6EshP1B_ka3&ISPm ze+N?Cc>_7I%1!f-@c~0{08tyjsppua?c4yakJn>J;v9PxsKNTH>qxA=jrv*@Gp$GT znJ>8MT$g7Zd-F=a^G|X;L)69X9S-M!hKWVymn zh$42DR8{e-_UVP!>t4=SY}s>ggfR5jwyY=VBbc@jNNRg-qco}!Y`;d8-r|2_GCP?d zt7KI3ujz9IzUIs$EW_~fpy~znn&q^5%gsDVs0&SymG@dmwmd%|X`#@Vy|i?jfqq-5UY{0isyn30j~k4P z6V*0;=kxXcTWK@7N6q?e{2u^{p{^C*>hx>E2oKLlUX_A6AI8 z!r-PbsJ!Pope(n7vV6~;{ju`Aba8bLwy{gpYQee<*x7rnJ$e7XMIt;z0dohg4I-+UJVrq}_>)9AC>-GKL$B0|Mc zS{Y&1GYG#PWNqK$7~WW}__;G@{8X|^S9b_&zA#n)crES%%oO}-;U@D2?g|13oyuQt z5~pcsXqcqe;q$<%6!6|#mlYIXL&&(T{*TkH?<(_@uN!Cf^vfJv^}gM1mo%_~ z^wpXnp1%=lL2oLqY%sB@SOY=R&_CfzzSz;(r{2n(>xDfqb-V(JhGqo>80Jlfu7bB zPR6RsUv?d?R)fQu95*lF|EP5f>P*P8<0wS6;l;!;p#ik8yiQ@VY@cB?=z$UwiH9nN%9ugG z4fO)L?pcr*cQyS}tZHqaf7QenkoY*YxBl2^%vYUnKxSHPq|NZcLIgRv$?`fpA86zc zP7w0%08*(dY}CnvH}v*)e}y3p2(jUpP`b#lrfZ`sz8`OUe!)iT<6zG?ku^u%WiJU~ z_RMc7AeQAasScm^UOBtT>n0B@eNPvG{2wEpzk1s*rF8TD=PT6+x+BNamt*^%sfl8|&^2&~SmN#uKam&&n4vEx5@gy>|ncj2MnR~os|UOIAha4 zH~wGreZ*D(&+n6gBmN`C{Chx8u&A8fu-h}gXKwFr-3+tYJ#^>SdGR-Har<2C`tZ%K zdpI3iFj7^l96FcJQ6A>;1|?&xMBPHyV^s_oyv;s@;MsN_ts_7Y=-IYCWa6`R zc;&tey--yj&2E%-(;o7^tr`gPBnLf#3Y;~6a}~j?xGirh1?m2QBky6`AA0nm zyqN_G$o<`x`uBnlAY!=8-1@Hq{XZgQCNIjuhVH$U=CjRd#4m&Nd6anGiT}R>LSW4; zyb*7+K3f6VwXB$+(*^bwi235LD_9v$PUN{rVvnE+Qfp4$`?c@rdZ)=qF*q5Z20=*$yM8g~8pwpBl5rab z9iSs%mc*_4oV;7K;}c9@tXAG+P9^HhvZp>GHuYWUh!Ceey;zNNa}8xG_atqUP<#2u zkRtXWsgkb1UZc$^R!_Bn%o%9AK@m+*JVF@_cfY`YR^?x7cvS+#hrK?F3p6tGs}dg* zgW_ksGmd5g%$?X}zYPxcfuFER9Q}E;$<7{iv2y5~0#`>HO2s+9i{b=~JkztFJgmB< zY@JV;YswARowBxnmDe+O$82YQ-cky6T+5yLtu*|VN9APkQ~xQzZkfkdg{3B8Nj}>W zLdBP#Wn2X4cp%Dp8zIUf)2tl3^K?ld3{F((QAtVCEPdvG``^26g$@0^9tBT;zV~AK zV-rAKAj1Js6{NN1*4_$RXtZ4s8JiooKB<+IWDzFgR_*C#7RqcfRpXicsm17itUKKk z{(TqtcWut@R6RI2QK?B6QAD(kBur2p_JF9TzTS5+c$?&7bw!8D)ee)Ymc?lPDASxd z(PGb0g>PS4&L!3J*na+z-wI@>eKd*_(G;FsQ?LOn*lN($@F5w-Mhu9YdS2?CrR+kK zbk!zInnff8&otU+e4A*wGqkn^@HBVMCrvgp{2n{IaPY|l-=^NF8d*TMcMDqW?Cg?%PBm(iq3UdXor?dckpW`;j#mfs=n)N;dcM~ zpp?87+CV4hT4$R6Va?KV?g{0mU5QCmFO_Obwy&mffVW-|gM{Bw^`?DtcvkWjC1=mK z$zhv^y_3Vxx?ZbJvWVp*fS$&lhU1a%8*$8hvowH1GT@3wa$kyc78b9ssqDSjCA97L*B0ygv-x?bbJW) z+%0(l!Zt3#I_I+TaeA~`<>k(NGwn)vLj_Tpjk6tO4r@0^X)RzUriCpnQlwNNYz<5^hS6yh-o-Na<7dr ziqR)XK1`xIE=Z*O)e!<>(|i8rog#vWTrofe6f=Mz>dM` zlI%VjSR7b~0jszzoUn^9eEVsjH8@07F?c{y`8(ObArPEFu3IO`M_Z|W&FONmB)iA5 zAwsV2O8Zb==}b@f^5zi+Ge@eoWC=|z?Zo@h5dALYUp3!?ey$|`X$D1+`B_xkwof#v zyg@;DFk!e;8IExsnikLi|2iS~M3A*^oNBKWZm%t z6tO#Q&{}J8mzO(BtNJ^PUgCyz^{9{%>~)4UUdoOZk`P8z6Ys08%vR^C?q8 zob@?wnrmhR{CY@Id!)~}uRq4#7DTmZq@>p!f^bw6z-jSaoU^exQF?EXaSdgLJ^G}y z);izzN5k9YJb_Gs^qSmbVN9J=@3X=Tsr|FzqGR^iP%d&qT5H1z`?Tfbv@C4#KuOW9v)$6*cq}O#L)P3oxKKhF1lj>a!c{M6= zYNwq1KcKGp@k2IpIYH~|c$HBYy*2f6S|@$jW%=|+{leF~Fu9)#kA$b28^L z6@;lN(A7%59pBQsW^dOSEkh6>3U-y}~9OvS!;k(gSJpAKCf@&~B# zv$v6zO`jiIziNe((AiI;-1{JF4QKIU2u*K+f0*ooCOS9>Q$+mXVov&d!#zlzHXiaL z!dt2{m{AGNfC=EGR^rNFnl>TrA?_ZA08PIp|dT45IK}uMWN!G723S|!ENdGP&MB8wL zgkYkT`h2}bI3crGf0m=|sr}SV7)@;+EU3lvNqXJj76$Pci>nE@xrAj#ypo>L(xr=2 z!dJ#7o`&dw;Rfz{->A`F^8M>4hi^6NS)*y+E|1l33=e*OJR;?%@4m%Z0HF5G`)SX} zoJr-?vexa?(5U1`2sJ^JPQIny6BSGIe3$%u@l-?tco>hLRt8)e*SaZ?yQ4)DUdaWH zJXO&x#CSiM8^Xx_4xFUrVN^0gfQs^WtF=M;=(z$bDsCL^+}kHe^F}}ny5&x`n6k7j z->x_RsqVU=nW~9l)*Byfy^7!MX87-JbBYsu2BVI>4|6m48CL@5{??Xzym3_rvtEcL zsCq{z+xCWu9P)xA0GUX0O3h*hQp#2)b3VAzT|mVQ|i~JJbarC zXaUJ-CGIlnprW#=Lk*;mE6XWWVxY@B0$ji)BFnt|Jg5TTiEG{x|?&m|9l5-B-wG?i8 z)lSCL;msvy?`%+V6v6S?4)FVV-hJ%zHFsCM0783g%tTI^o4$O|yKj-I#!w!Ui2%x| z4PdIynW5Ew`R{wN@ZcXpOz$R)LW8`_1Lq;!_-h;i{=NMO@IS-k4<^9TJVE4VAM~b> zN#~F?^qKC{%$XYNJ?`EnEra$O59C^%oDX4klk9`AsDY%(b%*jpG}0Dsy)0T!RaE2< zIt&=RY)U?@#Yr&eUR-ePhqLjKtobT|0HF;3fxCsNGMrD{;hx7!A5n8Y=%Y}qnyv&K zxhw{v-9ZS&&_>(di$DuBrBK260Zl-N-)^Nw-7jEtEv~xCe*TwrIG#1q9pgV-+}1o2 zurAr1;pra8!=O3#jxt9^uLN@j_lL~HesbMD3fz-NG4m~)H8^{Ua zo)#lry7Q+IFa2MUO`#H5Q)=_wO;qaG*yx3~p6=eE8D5a8#>x6JbGxU%I>h>KL{C=O zO_sfL8u=+LT)rn#RcM_p6w6=op?#VbbH9KKW*`zOP1)1xS5^dsGCx^asEh=7N!$$V ztU9izq66I`T~^3^8_E7^$X~ILAL)R*p#X5yQ01=oM@9xhO*a(5IN+XStF5P-Zk;|J z#)Oe(tXF2aRrTb{x{X!LViJ6_JC}&B(Bdk&Cl}z%>jq5KD7Fwen6(Up8+nDJFjJvn& zjt+-~?q6eyTD9_WebjuQN&)@izihNB2b%}rpT$9pU>%iOoWGL!xn9RIeat!o-V4V^;|{8MGvPt8%zZE`S2_= z@~9(?pUF@q8|R3Rxvu8pLu27 z{$p=lz3M%t$`iwuEIWJm^cBxDf*RE;tPY5?$CvgC96x?sQp@*(jWcR7jrzJ|&wYFQ z=h{T`Cz+prcb2Xx=Yu~6{%no zp5x4puzvY-bxe9<(iibA-?n>ZUEZ(tl>0}euW>Q%(Ge!lnFf_pdVK=}j1TarOjQ5M z%(VTk5ALVfd^xyB)!#ABh0~7D)|E9QowL?CVbj}pYdu+Pq}nerh_96DK|Rbr)9Y8* zDTPdJT}6>ua?LWbVzg3cSf=i+uuhXZuxG<3G5nh!-22aF^8-agoL1knhQGr$yaTnR zWc9mUA<_<458WGC5NBNEzX{N)s(xQoR8+i@G;-V|gthghQ@Z>!zWJ#tmY#QK$!sP( zw3C@&aaC^rgRE<=zcyv31&s~k+tk&oSV3vHdx9GKV@wod*fTQO5j8b?9@z(^+k@tr!cMJI*K4c`K(Dy7w zP+e$mqhZ>T)&m+fo8$#WoUXd$2rXK+v}%6Xh4?1!PN(_on7^wgCHBW<-BP-jtiJg{_Wz^ms-v>%p00p| zw1RX>E8X4QWq=?JV$dxqC5UuNx7dUr-Q8gzDX4TK9p5~J@9+D^xX^vZpMPB}OtLV~a>YTp#$Gvv`nxthNw5xP}iOuOfa~nK}1*`F>RxCMGle^GDpQ84r^b@vVZa8A+Jr zV@b5O&uYOXYd^l#@GtS)fr;kHv^W<$6OWOK`!-K1Tr;U1nnYNbnOBn$%WPwaaCrSH zGYyuR8T;jzzUa52=pR1f6JFv?%>O;izUi_;ju)B=<}AF+C`*2*{(M1R zIA3g(3RRLz`op9U0xP^HBxX*TzEpG%&gz|PRWo8MO8eOHLzb<+SB1DmAE9m@Gjb|S zh|R8+mQ{D3Jnfa|HCg7Y=y~&PcfQM^qW~UEd^KL7?ST!ug41ZHA!I;WK>@va;ajdV zn)|mG>!6QvyUigPdoYZve8-#}tg9|)gddgbSd1AN*fa5J6&e3o7EiBqLzmqhtFre^ zL3S+ndK*&=E7q+3EiiO(saO;6%(cyxPp4Xb;LGWepQY`|&swMJRqo!NuQm@@otTL~ zamu@;kCYaIKkc*G=2cYuutmtsiJsSD8G_5cu{os^$EbxjJF3!#acbY&Fj4RhqYW!v!21fL zSD5H>j@7ZuMq682+(2`$!UoC$0%<8w;^^x1l6AyX_5!l4$I$e! z@`Ul!^tp@oBu<|;w`=R$9Se=R&!nnwJT`3KCir@SJ&()A;qt;f>TWAmtTtA`ptiNGZb$R4kU}OdOJ8e z9?}CgV8>}mF?<>7j~(^8r_Sz9)cffXgCb`utB&dwivTG!60@Oy775q=a#^QKZT1^& zG!bZAo8)TIITjFce(P#05d7uUmbw~9 z7%f+tJpzw^#?y&S5Jq5;Xo5y!*?0c<&Fj~%3xW;id*POidn^p7+-HaIq`wcix*e`<2P_owr*=h3dM}YRN7!@>9qP|a$x+84UEyGCYu(=vIr^C*e z45rw^;|-gNxx7g(+<+_+@-5`O;|pR1jokthDO-5!g>g*LadE$y^kKQz5=4O?gv-z0 z&q=wC35OPL`^_N^+*2qok-h~Ej7xdwzr%mBSO}Z3wm-AeuHk*9YSS@;1ACijtE|X= zGJYuY!-oi_WgnV%)PLHy<=wg;-kTOkrdR5e6u;cToF9ZXZ=Lm0I8?9k!L1mjJS1zq zWQ+JqEu<#Q<;S9bc1}Ca2|d6l-U6?M@R2-j&&I>U0~podU_00MwdB4_T|C>}fg?Zf z-Y4VJWhajYmt{~W`_`{WdX-Rf5@6uTTHxV~88%n!qGZJRZd7mAY*z% z3VotQkbMh@W#r|cB;&4sX0|AvzKuOSB6HJIEkU3};PTG9;AEQ$mL=*(SRi~*lI+Sd z=LI~Nzn_srMs`O=2&~RzyZn}~pnYDFWf*uGeFtZZhOO!e&sV~HHyt4{j_*ru^O@Fd zwDCZBsZTKhc@KB;I1hJw{0T?%O1jDddZl@z$I%qWQG>>3dL@oRgY{Qg@g6T>BM^Wc z$yzi9v5(`^v1cfYX&7e{4eZ5bzOyZUkeZrWQv36-b$a7!W5nugb_5#7A;z=7IjX@q zwk5U#iLS0LyFronYWwI1pQpn&M%1Ho5;VmxUoXguMrHyPaHS(HWncV1qFtmN%IEV}bZkW!%o6dUHCQj)!MZ1NwkDqOOG! z%Y$vn3dIp>8pD2s$vSxM1MrZTCrZgT{>5rJ-H#`FpB`LgN^{GSx*#y_X0|HWdT@P7 zQz>8IQ|(3X1YyxeTZNp|w|^M#?f>|;r<6cH$Dpaqz&A7~375%K#a~lyv;5TT_zvUJ zl`gJUD#j4*1{$xXXWZQ-KNS(r&(VDH`-YK{`D51~Gn|L5Ogqq-Mpoq{(MMdmuUc02 z3G4BUnVH$aiu1SpL;vN^P&wbK^}I%?Bh7}x+o#Hg6RWK*j%ps&e*G3{bbK`;@v(S% zNgjTF9SQyjRceI95nhw&(r}511lew*TOdY}{%L}=-Xpa#+lirAfUN97ypm*n}&tEGMw6#>tcy`QqW7+TBlc-k&_ zg1<|qgeJa?fv!fYdZ zWFb0x{|M>NMUT ziWh#*a`yffyz4#qcj+C%GB(>>b+oj83i#41?Mt%6>1xZMbn^~K<2Vx*2YvY!B?TZa zr-W}6Z{0#-_Dm{>)buG=>scjHb76iyYeUVJ7h`gN;uxx%-vZ&epM1T^In#s59(CTBE! zNL_f2UPiG3NX64uCcooL8;5xhk-U)ae0MtDnT{x4YL!sh4?gx+A9>$U0@*(ACIU*vbnfYxf&|&C0cC~7gb9Kb& z^ENzdg|Fo>VtZ_bxG_)7+|qKdn?`A%Sn-8TI!9U=6YvI2*+O7vS-CA`8r(gcGMj@l z|A+__xiD}(?A`Fc@P2NW3W&&a_T0|u{aeKEv8dkH9_^Lj(dT~(MCdF`GSN9!z|R3! z6c=C{PtrtE^Y3ufH>6Um^GMCYX!l5Sde3Rp=9z^qS1iQeQ%=?zC+ho2WPH#oifugy zJvAA$iqV@^U9Rc32NWL`?R&1xZeja$4Pf#sc$#?b(;Q;={afS%P#HWY`(kjA+dMv| zBPIdd=4dBf=Nyh}h667ln~jz|9{EG!I>|;oD(miEt`SVH)Jv0&;mq47Nx)VzsE8Fe zgrAxC$bn+){Z%%|L!a8izWR!1VT+t;dVxQV5eiG6JMqY28Aty{I!g=&doREgu=UjKw;&5K+!4nmZ_!(kPluiJ~~OrxtaT2Aeb4h zn$@Tz{+=W}>Nfp?5!sXZm=_Wk9O>xTuaHwB>}*g~q}#80#{F0Mwn1hjjg%-P-W?by zo7|9A%3~{>(2~HfaCBxEN_Z0<$a844Qh1J3CYp_=*P~19NP$7*zSF+WlFePdU6soC<5gb#wa|7GzBdQ<%CtZh zc%J}Z?UUw2ko<=#aD7{F-(E!{_O-dag%5aCt`}T$%y4Vg3>U5HR&)?*LTc55r-|FD z2wr|+VSm0%bgT<(hrG~V-hO3twh|o`6o%MnmG{{rSIK}%UA78U0)pc!E>B{a!gbDa z{$}ENwc$sXdM}KGMR2_Q>dm)7P&F8ix>Qa zpp$5GAa3quAUvGyb)wOerB95=kA9Sd+cGs4QRk`c!fTG|Z z{=@ZB_YF%3oNzCDVrnYRy*+i|nV%yQRxZ}_c#e*ao={WdyF3YnZT^c&+OxS^X#xY% zMMxgs9H(@Y5Q zC?i2?kHn-pb+O7_4`$akRG$HTtkR#iuQ&K%y6|BZ7{{H zU9%WzW~dNs;nS7&c~O~t|8LdnQ4u841JD=jus!CA&T)vmv*Og-EKu+B zYdq%QQE@YXwrly~&j7B5#s zKV*b6>d$7pP>0a;^Z{l_B&0zHTuQY3pssh5aG}j*M^OF0Mxf}2gH@Ouh=&*&(Be(X=n^$djCmH<}J%W}uu+)BA zgTIZ@*gc$w(0kw~G45JhaDn=8RslyUx@3w_OI1t_d|70ScTkC*> zXtYZDTqhU=@R@1@TZW*)%Iv%5(H3h4nF10uUU*P7y4X@S;ssJOWL*ufK7NesHTN8+ zi7qv8;_9Exk`G<+eRBAeHAAA+>e8$Rc+5%b3@6(@Pp?GxGs*+u+{R+7{c#?$=Px>Hu8T?oMNqKQhvbP(Pjn?G>elsF zd6Cx~+Gzc;70Pa~0nO~?>>-iC9#FuO!RG8qJQp2=r^9%#X(#93e88o0Mf#T9F%Cx{ zfn_)gp}@fT3j|50+TY!eMnCt{fW)UPei@2QQA9sx^HSMg-p`JH5XxNY_PzwuU-L3dNs_5}3upF=#zLTDx?e5B_3qPKrQ#VB46Y7oz)JcgSQ`TKvsS9>^8%NO9= z$zI9o7KW0L)WK8idvvgf<{c|6da&BKxU+K1b#<~j-zOz2>zaQgJ*8d2lsgI=oHzPI z>r4c^<^>oyw3oQO=Y{V8f#ZtdtT=T}I*Hafofz!vt3&9@0DVxHas$opX+kM-L~_^3 zo4lCZK5q`FsL{`Xa?A@SffT0^z@zG_yO{yrDbe z9wf2HjME%a91Mm!*lGi3fPaYHZ*?ZnI6+{PU3@Nt2GLk(hEqU*xN0-KE(P9EBj;_x zjyzS+$dF)QdQAy2S_1yO8LfP^cj10coVxHG@>x+1rU>LB*0dXHAkHJyb1o2QHv1It z{^PjnE-w7(dqery*9vwHPbdn`Ju;*k3vQn@+i0W2R=-N^UVj#d zrTlQz)$~tO;S`vj&!hsfvRwTYW4mTx&8D7W4N+QI0<87<<)FlWWOuge_;AI_`R*Gj zdc%)D--Nwj)1Tf}v->bny!Ln<%T;UDZZ0?BrQ!fIXxM% zE^T(qeRuKFpG1pjr6AIr1jEh2P7E1U&Iiz}1GvYc%gw{HyJ#ix5FcqK-N$=X5G&>3 z_1+$V4vtYgKf{7XJnvN$Opc-$^vPKs_58PQyTIr6y9WxFQr~9Bsh{RXY-uV8v6DAj zmNX;6+k+${;y*ie9MV#_tT*x)UkT5^3umOv7VlmK(sxVl-kvge1*;z=65NGmAnf5+ zKz~B(X_S6&91VTn(p{_al`d*81W!i9wpKzNS<<|OF(7xG{^zM&A42`~*>?4@g2ku0 zjt{693B=8`2y}AvG}jr-+qE+!Bq|QHif?f_I5+^gE75>Hhfol=@?Nl4+|eL61R5X| z*FIIAIs<}3aTjL~v;QWT(%ziO=+)b&`x7vJ@JB#rBY{KUSv8=sxd8WlZ~VyBK4X)G;D~e zLPvqO$DD-#V0hpS$O7S2+B+%GxDj&!0c*`iBcS%Ol=0$tU+}M{GPNWeAWq`YnF;aUW|I~kB zmvj!7jX>i5iQ4nJ)~c3%IFX zFye`u=`HKo?~$u-j9$aAUP3roRn;h*a_{wY3}_uu!U46UU0C>z0GWd+%4g}4^N}Vx$oA2*jG9bnFH&#=bYS%mpsFMD*FJ3jlEJ37M35JW7 zOhEOTbC6C5Q;ufAyLZ25c~X2S5D?2+z3Hsu4l+^I3casw9xljM2Hv~B;WaJ$;z~9) z@1+!@)3l%-_bLMsth1i~Eh&yCg8V$qRJolFc>X4n555{_rz%t?BE}XoBB-*$zMpY3 z>6yXwqY~PS*oX5bHr0Q>PUcQrz9aE&rd6PC|7)3FQeb0Q?c-}o#T;)YL03c^{Jm2) z4z$wM;nBYSOY3aNL0M=MM7i5dufD-n^+2ntpY>s;zI;g*zP|~m zKKT@johC~0B8Op{=f;P77qDjcZ{gX=%&&ryyRrJNEJ=BQ)GDR^^-UsidL@k;xzV5! zX9VJY?QixF)`R5wq?za~V}dF-z@v|J3POSGVMf^;Y*gQyHHl3eJL?p15?>3^Ad!~* z>VN1tBQkO6UMNyRQWusLlGj8fv)gA_hAMr*I>)`1g?rn=04qo!3@E>bL`?l_f83&| zZB88K>k!SZ2ef-*&Z#pF|EWbYPfl3e@t&r&7}%>;8z$}XR{3<`>i&$CCzmD{3S>m7 zW>Oq`xZ-kTB0L3r{@(Vnz>kj2L$Fa)XTK?TtBljwr4QeeE$Fytg2yF4n;i@$F>#)o zNngEsHO1j8F`Uxf;~fnctb}7iTjWk6Zbjbn_PFPld6L=ZLtsYOAE_0vl-x|uYj7r% zFG|pad+(m+1M1>|=7?>J*qXeL3oR`zpN$)Dt1--dBnZ!c^QM!Ao&{0>B}yFLetGnVbCxI&ACp|5r7nQ) zB+oS8nGS(VK~}^kWWt!eHU|(^Pj^T{wSB`XDt}F@_)m?Q2jwhU(8|RgO!#26sI^ z%4SiFxC>8L#y>;r0nsQc!HP__ZrCcFQk2oxhcC{nv219+mwz&7$Yg(O>0syOL-?c* z5}ue#OG}U>(8g;(ZPq#~j$fEqzO-ymjgAdUEdi#tieIWKl&bW00?zSrWr0yIn{V&_ z$MABCilQSt=Z;Ba>kKEVQxMvf+Z;b+p2fCzBqwTXs6H-=KN^sYrj7J@R}LeC@DcW>Iqzf5a@dvGGBTA;YsHTV1SXg>RYMD z$pwodV9X!({nFVemTS`?T!$3UQPZUs4E4iL^_oZni|At;Q?1M8ev z2atD@DMWg6iJ|*|G%tipnp$kpT*PaUvE$i!41EO+LiSTh?@@90c5wvOR~zv_HM#it zoB0+cSj9wE>4vT6G&$oHW8w<>Kn3y3q0H*Ik5{r{oSlmOz*SYrZw_fSkU@LY^GDmz zz9Wes99#%lpeUJg(GneiRW|(`ScNvacyLTYj&~xC?|4AE>(wRjZGYkm2s3ujhkRw? zC>Gcfn1ZI3mI*$zH=WWNNE~dw7Dci1_sI*qC;|JBBP@PtP}ElB#$GMCF*fsrgh833 za=2M%lkqH|MmOY?mnUWS3XahrBUGwUxObplCE|iWQdiCIk%dEBvd?xuImNo0iH#mz zM?wf97nSr8F*}OrloAxC!Q0e{p`t0@+)(2PCc$Cw5hC99uDZwf_6ya^=bmJ?y*pmB z_vHf!9am{gxcB2xHxpV=>vZSs`sIj|6zhU(-G~?%7{KIis6s+lpb`FPMR8d~;u-r_ z$X7n`YAO#m)NEjLv!M6*Y!QI_lkLw2A|m+R6+!hx$}SAS-J3fW3o*l7)lP zt}>q}Z+4suREadU`7k!4(GQv2SyD8MxQ79ttw((S(UlOn?mt#2JdDLFkj>9|in$4{ zRBfoz8w0(8-deCZHphbZ0N3C=AEs$4h9w_5m_HG^Da&li_om%xqP#={5Fy<%_Pg}9 zJD$kW`ECu4kN1pd2o2L9Gaj#!d^2!VTh*2@E?f4VB40}AkwLWKaro@2co+Z0)luqr z^uQc`j1;!6^Ug_l4QKo@mzVs)iK(*Z?rcuH2bBMiP=7_r1nu|adOEf~ zJ=lrwg?8df(bCP!8`WM*4~@($Ewzew-RlC{7paN*jPzYHk4e*yHuKwidiXJv^ewdw zXI_-hSN2rubxMH?QNGQMy7l^%9(U0g(4G%aB<@DwL4TuqDZJrCouChFmqMp(x+}3M z<&S|V7TJ0&+^tv12D#%?I%M6}V;3K3P{M&V44FkFD{FgOp);jAMN26TIPBRlA_OQ+ z4ahBv{cQLLnmvFy_%U`A`Y>dIqCOY&&oV~yWe~cZ_C`7 zB9{D{9n5Mg-uHtJUZ_awZ;Y=YbKt5~C2ABj5V$?BzfyP3}6fLOQJ5VMFjQ7>uz0 z=E@-u=Udz({QT`(R{zMHLsq``)hD2Ig10ufS;;S;x`Bfe%TU>K8-i6)+o}SFb!{k5 zD~LkesvMQy>-jyt&;3IWM1(>$Ohvnl=;r7Vf71VYLupclabsY0Y1?muqrUNW&H7b> zOU%O`)272kdT5|!MCrvt4d>Ld{^k=)nX{w=5RtqA-~lMl4B>=(Q8;0%@}!WL!nHSN zMyyfTdHz1>D8&GdG)qIb0-y9lg{=Pjs{^@pHZktjcO)h3j)*@CIJ@oq40d15O9rr7 zIX+rBb-y32u%{|gA21U_^Geo_)hqmEDTbu}P>&c|i z-}pbsbudkBwPkVj>?=Xmnaov+=l%2GxX9Pr`0(zkG4Y;h)Tc2-qb0z}zT)eJDoB^D zGl6RsMg66a79hW$oh+{pABGDp5HQD(0vU(}(+I>A?Ec>Wz$Ck*B=&flrLs4nX#b$D z7#==`DVivZxb{obd&LXvaktlJ9PIH2`U&k*D;cQQ7uM5oEt;;1aR!AR(K}@Gt=!3% zUJ;)uZBd*$E7)++oV*fRV^8mKYxvd0(@XE+o+owjyH|}UY};xLndrfc&ryEJMM4+X zH9tJhIvV;pRLE`k{z7L6!DEC^<0`wP0%KMO2_O`PGGxRd$pNQ!x^U90W!5yCZI!w2 z87Y2_BANwn-c0Az?x#qxnr!c`8-o#6lDR>b`p+P861UleQ_u3NsuBewoS_wbU!CM4 ztk((_5$}&|II}dQ4gI`O3Hb7saqzw4oNpqay;FQa%E^gTlk}vus26-qCu(#ve6x>U$l_8^0To_tx!5`_hFy zp_F3QJMF_8=i8fpfJaC~1i|a@(ylB~%crtFDRM)=`UOG3Vdok@+zLoOu0LSOj77%0 zqlTMg9{n@o;s8<%O+5vo4218$I8_ihHp7*59$L)4yuRrP5+2_(#JAn^yjvrxdI2jv zG%1O+M`T4*=Tf4V9%_E7%S-q+o;E}-3g^XxC^-<5-|3}&J7bJUs2)QYAO$-&Xe0+4pjm=AT-3GGyju#{01pT;PD5a)YB6)Me^Deq)zje@c@}j8+=>m($4WcMX zDYNr*F$qRlH*Al$Y|#n>#%4MrP&a>@J=>jNL^5`Aiv3`*!%#FkGF5$<-*)^Fe)Pb- z2f9xvaZ386AeA{Iw@jm>nl5_Bxp&gIegm%OY}=9 z4EIOC)7#uYV7nQyq2@nF?Ux1|2$`V4T$Qusf)`-0h^#cE-G0w-4y(gAHrX8KR=oMYjL>$oz{A%qBP4NFrxwm zFb9LmlEo8&R-Pme?A@5W(mhlP?cYlr{v=sl**6V8Jt=cIDIs!*B#<12hp?_CNgVkb z&PESNzn-r0`x+R&0dGk2*8_X_O>?4#@b<|v@IkYocZOZsPoMc*3zm~vD2rHcpq?%+ zMK8QP{!10^^YZhrpX9&s%vJZJVa86v&6;cnFGgt9^G(fxDE4Tyu;|uzvr(TfU-GWt zSBu7Iz(712ElbIINTi0jR;xSlf?o0>zfo&Fc*0{RCajq+v0ykxYK(fzLJ9GO2#NK? zvyB1g{h5Zl)&EDn_)UGhMve26)N{_&r+0PLZgs$-&IMjw6lU!1ZRzWphYRCt#|f2WOu!JBsmY61ehm{L4%b=oqqRF&EV~=LH=xM) zQssu?Q^CPSTKQOUmtz0Nu+t#_1xSpXHm9t*f%A1I3wYJh#FHG4tq9ppyVt7_bbUkr zg#F#GM)Z)w&S-uW?&Amzwi!3Qu9D*XRWFE!g)rVFrL3=BAJ>$PoY*Dh!wK07xdlDo zvD{F2RAJXMubeT^r#JMAD6*5*b8mEr;onLJS#G2Q=V8 z7js5vksRd=10g=Na>VR+&xrJl*|Wc6wg2CVA8PFwsgGyM_Em?IdaWrE{8pI!jc5! zTxGZ^$dMOddgQaUEK-HJzI?nxE;US^;yiud@ROJRQue3Ht+~Ok!mn>GynTj(M0)M| zT~tyc-HU|ipWg}EeR}Y)j8fw6)gs5}6zn2`D@CnBwGs~MqJJ($(mZhJ*>CA z?Mv&tATnhZ#&imY_Pp3@uM4=(wpu_wf~wolXzwbY{F+Z!sz^e7eEj!*?TjvS4_vIx zv>Vu6X!oAsTK1-OJKo7?75-c0D6~{ExU*n%{D36dqe=>1*ht#JiN>9%6&CU+d8POM zmW5M}EOq<+Af9Mi?8iRSRn$-Jrl?f!kymokN<$wP!*9Z91u7vzZAl>un={(|*jEuJN|1sdTS=^kCJ33+*DowQcAAb(Zufo*XVBq~4-cv96@xg#>ai^^pbQ5eE#3Zv zSj*i+PBq@5)a%O3^bs_uzqF-kafZm@t{gDFQ1Vu4A5n=)`%o#TsnQXf1;GlGgU-yf zmSCMHrJQzFi^la&QS%1se;P@orXT!bLZdBcC2g(=vt$jn6Py+dY7`3177Cvh3?UFq znifhj6Y`@I3X%~FL)oD)BkAOn=Zvh6D(jJ`Dl*izJq%)3#bO)MQ9#Xo#1P^6l&~<) zL3!*fo3pprbs&B%vazDZv5`=Fz~B;#`IaXstrcf8ZAEUxs&P4!XxR>~@9 zLE{w=AP>sv)!p>ksK+)Tp(E+OBhM3mIn10so3ztA%*05ZEBr#G-D>JWD0&kF z(_(~PP79`F?@$C6QKNH*a)AY*ko;;XCk&PjxSyG%U#cU23H4XBM&uRDg1nA1&1RH@ z)A)i)JS*2T^#kulvq$4qLN1%^t8d#kRc$i1aeD_%u)I2Ly*t+=1P9GcA)q~nV@#>2 z5N?dzEO=&Vkl*t+(c4x$Mq z8Uil$E2I3?)s~{&{T0=CYn?f>ZRxDP<2H0sdZ1A|mPk37_M`|=DwOq=%D$m$!`U3C z#U7;+NtE!ZDRBC@{WF-$eo7YhCWO36Q@)U6-~K|d-Nor0Q3Xee^qGs|y&+KoJ+)25 zf+5*EqVO;14xIZ%5_F`^#zEY^NSoQ|~*&~5Nx{*JJ-;-+=<*2b7S(XDY4N7A< z4{58j+=Yq9N9*mm-^_#fR?Lkg4V*#nMnO8#Mled&Y?4Mh`O<_xG9(R>XoKlUi{0ak zR|~q?dUBikm2bS@)s$n9BaBqxcaJLTWjlMd=x&QZP5t(VsskG>0WT%F0+bK;b$Nm zkgPt_AU_wb)a*MvX?9o{S&%iOdA=V}DdD1v*Tt7KUXNV8eF;g$w>8UO?m5xg=ex7V ztx$b!N0f@ePcHYXZ6INrbIOpk&u-oLJ~F=n=fMl+fg#T$x;}x%!&_u6{?Tisiu&-! z1Yen80^v1T08echmgc3~WyBCoa{on>qWk^VUV9IJqY<|MX6V}A*M~3SfzQl&vIbWV z%tRatoRgNKl8M7Kvzm>^F(LK`cs;+MEsV;xW;f47@zVS0Ja->7&Pb`H+r<%K3k|L)vfPpDOO zbS#EtH z7imz`&X8fwAk!V!7{(P#bU*1M-MU0FQvBjGupKJmGf5HfQmjW@!fcw9+D^`x3y zDw|;3eIc;huw84#%_X1ehFn|qC*iGLaSLaT>~4kCL`0Q!4coN< zXRsW9cQAK=3AU--exAoj<)6pNe`+4HTU#{*jC`=+$PVy)`YT$Ec2~Es`#%V+-qM#( zcglhYOHH0W)9onXz~jJZm(ae+4j6LV3F|Oq)_As&vN zQmy)1>+KBBksVkv`~Iy2S8(!zO@&pi)M6ccsBpLq(o5Am*WpeKk55+C`|VdR9Bq}= zMy+j8tLFOeIR;o4k|@~o8ckxQv|aKHiP_<1S~H?(B^C-o1UJFN zMxjXm;RqCx<~zWHARb>p5grpw$f3MMkd=f$bgsZ(QEHK_nC;mwub)GzfnJ4E0qtVl z#`dU+hlj`FEOnhDC>7m_Smfs zqOA_dt#+cVb`%g}f_cJw?Me0>X~2CrPr{oq%@c+9kIHxxhA8{rj4Zs$O}T=JA>Xlq z+`&?Ob~Bg#?^cN;u8D)@X0$>SO5qAlPQLX@4^jZs6?+;!j~(dk?EUl2$LxCQokCMo zuf02=N^AG=Wk_2va3>up>ia3$3!~IF8U=m*hZ7D-yKBOX>HSGNB+=x?g;t1%`L|y< zDvfEvta>ywG>@vREP%%!sSJ*g!!wp^Ud zOSa*TQ>QpwvbEnDwjvK8%tzx%><_c>!JU#6CoWGrY*gDg!oKe_E$Sgx8Cae(b~V&s z?4BAQ10iq;gCdqJUk7EJlhlU3IZnv&Pv3DH9d;JMNGZKNTy4=3K7W5i{5FS$9~CwK zOD0+eU;VhT1{|&vzf3lJ-Nt$p+9Xi>7p|yrDqhYG%Z5K&KPz$tD{pn4& zy_P!b^Xsx|n&>c1&gTP^#~ge8AG|uN(h*NbGHECofS4ckW@G~+S`Ic%Tb1u-(5d)7 zB|lN)1-&eBuxW5GFffvAst{Ob$T(Q3m(dy_fwB~lZe?k?-cY@rq|Ef*$cYIqfdeJT z{-uxS(U$wQC_#%iAJ6DQsvVW|)CMBDaPYN-|{SC$*FsDHq<_Yi;K@j)QVo-~3(M z?2jKgT}m#wjhIjQqk0^)U!ZzHRr+|Og)+%eEtg=rW*3M3^CU7<)s;lPxHv!I`81@d z%;o+|wzStjR@2=5v@>+7qs|Yd9L7s=Owq}>Q4qg~P?&8w$ruwtO*Fe^O{GaJhEO(n zEi96inU|wB%lEL>3c&jJg~_HNUW+SLIe%;AEOkhikRBIR~0mwD8qyvIID~ zg)gpQf+Yd+VEl^@B1U@y37CcjD;rNOTED_V{VRaeL26b4w{d;Y{SG9HKqWel;zul7znefPQ7T9L(S zZlXNT3f5$9N)d8YwLri1-k^Q5-XB_% zner2I1l>KH^6;u#kNH##>|kX?=?(e|Zg3Z}(%uqz-av?-!V9z0bJ0eA_++~(i43wH zuH9ewVE|bt*(l<>AsfAM+sKPA*yqs6|GQsD_g!Ie)KP2$oB%Z@ad7ckMq}^ANk~$8 z;wTZP(n{eN2A>@3n{~VF8)TIhgtFsey|gjX>ySwO7xP3GIc*G=c*aE>r(XyR3=I*A zRNyJ{C+%4HrIApfk4I1)!ToP*+cW$xJ8)U`ikk50m6SRA*Q=r+h$>x1{e@4HtP0e# zng9HtU17-G5<>*>U)I0gwQUYBMRrtUtkKJ0g2uEbi^ec;msf;hB)-6e(1^eowUKvM z$2J~7`klb)aP7DIB{^M9)AKVyl=xFT#>>$P34p6C3ckd#(St^c&8EW3JGVC@qoW%j zK0drI^3ikG;mlkILlcN3a ztgV)QeBxY|gd=%;H~LPMoBiS|)X$-%chj%Vu=WvjO8Dhx2X}NR6CL!w8Fl^DKsqP{ zecaGUm?QZ2XXOlzu9gz*?!`-yGQP;`p4+GQ3^(V3wwSKdBi0HA1g%y%g@s%$C1~GG zxkKua#nwhI4$0xYx&0yUI?J%Gi!mtUi=PsV7^CT%vyb>651X6st3EwCo;vp}FSC8JrCrZck_&3d!J@GBIkTjoR~Kz2Z%3GVx1GBtnww zZ-m=a73c5Pf+_BNDR@J|V~H?DLMCy~?W*^OV;eL`4(;n>XUI^7fX@#$6M=kX-HaR@ z94?!Qy z<*X3-QXM(2z>DqIz@*zUBR$VeIsq|2{$;6>^YIT}GBPq#g#}-qWYwucNezQ{b+O;; z0ff~onBqB%dhR{hWuQ~iwgq_QQ9DUTqFj4<+QI8EUu86%ib~p}LNM;MJ1=BK-lTr8 z5J>C}P++EDQOCv@llTaQU}VK_LKYAD;D6VbZvfojiY?WWN_bbn4h~^K(30l)JEWz4 z3H4$-qyM9UkqNO=tuj==tTo)?%i}jVro^Z4MXqVW9ny|$sN)wuYqGoky9CWq%>v!> zgJB~~aomUC^7ooaLja6Xdt7HWy8%@!DSpylQA?F)Ii$@ygYxM3m{zhTbx}?$c2Hpp zvwe`oNz&_B`{Iz_Mo>L?@Zd9;7JNF4uHTbE?BdQxQCnm3I6^JS$P2^f`1H?BLs`%A zbc2f31}q^+HNj+F78RAl?Ji~tCdOp=+^J0#e(b)(l4_f)&=I4vm%a^OtuC}p!CuuT zVMnhtj{~dB3R%+ClBSg^YP*(7flL^^a=uJdPM)TY4uOaV#m@6~ zdVVY?Btm3YIXr0V=t>b9)ODGvNq=Xtc;|y?6ny~`mR!dMAgwZ2xw!%$V~(!@2%%>b z#dU9Msk6d)0o#;#eD|*-%)PO==*o|5m0w9gt;mW;66$Y+d(!JA(tYZ6T{4bRG7-=S zra7N^B3pUPGv`CDV;&<#M2a9k|DlETR8t6owURceV<&%WY6>9`31>pd&7;F|lHF;0;aOa;*o0s`plToU!4DI7B%Y-$*O{|@N4M5R(`kOk>ZP5IZG3iui!6D}eq+Mt zlLp2xv$Ka&R%5!&RA0by@*3i)Gs+I$+;mF2TR5QWV*0xy4sO>zStxDRZ+AMJN7>QR zm~FI@aPZN;&v(>j39g(L-RzS=E5stTJ@x~l$mybsrOHbxr+Bj zF-i&#n`=t4f6;Y6Pij^2Qyeg-XL@;_8M=9{8PYQ_G>2>ZR;tMtvi5yRN|Mys{OIso zximlLWrzCPJB3fZ5BEp|=#|o=PQ>tdsISsS7@Kd1LUaTsc#bEzNGNC@U6%A=Yb!Rf ziP#NDL@-eZp3ODUf0VpE!|ivoUq(g-1^Q-q;!+VG#ck0+2-`5ngMY$)wG@PMe-Y3> zcPdh3`hQ3E$?m6gi{~0WJXa}(QS0tqauE-Vo#OUaUU{6P!*(SalBxcTwXF!uxPK~)PTo4ds?d%cz&fjA5>(Icc5 z-hPC+=_qn)r=cs_PKcJBrLb!c4tCa3pk0BqiJczAzpo#Rs6}39zT1y>X+t)wJa~iz z>=@uYk;^QoV6madq7&wyb2Jp6;j8g#$?)Y8MyU|#<;2Jd2maDh%{&*w@4`F=y(86~ zhxmq^py@XJv|GH-9{G^_2Ps%^Gericha23t?Y^C>mRCfOe|&)4BfJ3JCG^&K5Mh8F z7i9h)Q&$<4)!MYBRX`L_N2LBI5_q-M#%q$oaJ&qO zg#RqB zdmqbjRKaHpQXiG@Dp zDt9A&Gy4YD zGP0gv@hxUamr;+-mAOGmf-{G~RBCE!&UTGzAQ4Y@MQeZ_2T(Ho(#_dv7w<@c8|!uJ8a&nI0&dhNjn4{Msy< z*N$X)9jMvDA=*O5i>0Ar`-Kn12~F(o(~Bu~z@q?a2uh^mHtT=7#vh+aNb`yY?KX3| zFQFe|&FE3KOYaNYepRqU!fQWzP#A*%qmCLdZ^CbnznIRlS=e^_?h#UH1ksW2Q3WkiA8$}nS zc)sz};@E!Dt@1<$X=#Y{_HmYtL+HNf{B(DrdXh0Cv=&{5y6-j(gR3(PXLYgYG=Phn z^s-@`tPd3cC-03Qw&~!Bn6HIepl4p9d8J)&Y8$?lAbPwrG{*gseQW=Deg9{3^~Ja6 zq4j3n_Ce~xL`rQhtX$o{=1ortJB2yV9J zU8pP&fz9-$`JaPu%aDC#Q2QJoyHiGU)K$pX*f>9f#OH;gteY=Z*+!I>x9{A9iq{U2 zwdmeUu(jt7*Dx3rzW`xClp7qn7%KkOW%$j(Q}efcAKNB6I$y#U_fN#Dme zhv9OhvLqG%=3F1aB!Yfb2AiZtGnIUJQ#JfyQW3D>*!u_SkGacjh7x{Wh4m1iW4B53 zr(I+eU6RRI+U*;QPTayd!>&w}`;zG_nKa2WyR|re%ZK$V8mS!)pR@0$K2ZUn(Qf_D zqepEmmw6Q5;DXao0bmUziumx5DZ6`B)DKS$LQr(O(}VoBH6u{f7#z)tmmUQBVuhQU zn+@eS&_WY}H|W8AnG^XW%<03?AT9{5oUUz4n8#$R7CRzytM`Em6-^Re#JMn80Q1xz zpBO;GZ*NsI?iX7nNjY>Bc=^bpOPXJnJg9)`c|)EZD&!U7TgK_N?kzit~a=7cBU$E}4V4 z)4#`zNPiI=j7ODFRjpArUV}qz)Sssh#}~+oNY8qB>zW0(JYB#I?gpk)b3)hzn;ZoH zwEU%zCTV@`Ms#%FV`!mq!Q$tTXY!&EdEar!b6zpXjZ{}OA%PMpZxt}Nk>Lme5O^XI zc~e{pJ@bq1Q1UHrgY*A8On}&1zt;u9VICX|%O=Cjr+!s@o68sZDLn{5?KH2SUD=!yjIk@cB2c$6pyD?S#&(rnc+1gswwycq9zx0qD!M; z5>e6Qx(Q9a%{mH%hshlK&PB1kgUzbhpI->#Zj%gq)%abtsYZj(|NTXnwH+ffoNC~| zh$0|MB}E)?ohv^m%}8||2A(Ofu(5%?#~!xk-k}FgjMTta44^~`&Yp)XeDOMOB}|!N zA=pKaopmlel-egkM#Y!C$^z{?^7*II_+;?2x%>9}6jEstv0?*;s@;*l26EHY&J|@k zDVz|(|4Om0&YDY0PxsAH$c8t3y;XY%-o%RYEIjX0NY895?-Af!RORw#<{0O=ZIqqj zDXbpD#`lu_`hL6Hu=`poW&NbjhpY^h1gtV~e1S83owboF;*B_;Dy^>T*mR4rZZ~Ou zH2`&_;&_-W(Ao1Sc{co(H?P1+?siiIvH_Rr2m!owijT0K>?jFVIl}?>jSu(DJB7Yx zh+}onX#_w%GHxRT4Rn29^n0&%wIZ1CIE%(ZQ`$V`0z}ZKdL14h%ME%INs*I0WGh~U zZEQ@AQMlT0l%MaXE_4^5n;m|}#Y7(#Su;_e_tn?k5)C5Z0RFgID6z*{1(K{Q0niws z#F%3grpTCcYTfnO0HFsEqm`zNdAVL9->5O7U-j%3)*WNv;|F)4D+arFpdsGb*Qn8kAxZ>_V`F2> z&)}<0QIbtzgsVz8z!oJH1Cp5C{=dHF+lg zGyi+xB=^QAGlY2NJ1`{v?j-ue+rjl6ifqL#}j)Eq1f zDWLLx%R3kt6AvKyg1G8G?*wre0TdJsIy&XZWHpVgrUO|&(pZO8d<{f0Ct``uQ`j<2sXGc;j55fzQYGrdN`lyG&_d51OCjQvfx@8^lkX?+CgQ zduoy4`(Y|l35KeLOPv?O96Z5vGNqB0F3u%QCkknSiUJchWb59dnTUw6h5Jc$`O3|@f=@@4?z-9el z!%~hDeI!c&|B? zhCS~oT{pM5=BKgRkQI0H@gsK?(VXD-7|-UrRFLMrC+wH?jO@Tr4|Mr9^iZ3wu&{dN|7_-~|h< zM#}nC#ccSuVwHYBfYXWGBX?$ZeVd#63ua6SL|fgj@)XDXHA`_m&eL~+4;?70fZc!kdV;d$v930=VJutlZ98p<%nRYH%na@yJccq%HpZ_ z#&N&~4CeH&x+58eG}Qp6Ji{wCIDLLH1UUMK4O;-<>4c*&OrxpdDFKMhhu5}5KrFFZ zG-F*>ps^7C9e@aq*tv>}Vj3D6NOxPpZ2^n8ZF(F^hcFNvq}YYa#(PJFZ;081RSMlG z>?S$NDC~CF8LTN)serzsV@9x3!77?f}Vv2d%MQg=(7Y#`xG95cN+qBHGk{=eSDg#&SB2AK!+Q3bd zOi_-kj$g+R^*K^eXU;@^%k(k*7v!=65Pz1yysESQH}fYMs;QOa#Nx5aTyt;gJzj+6 z94uj_V0Y&7x>XDh_O{`e&>?ghie7@+h7=jr6y&00^pR5M$uc8uF;1W6j`V0?R!Blc zSI^?OPgmh(BqHYFwt|A8oEOGST(Ik2U*)B@I74SDE{j1sFPF;|?2 z(13tR;_obMlnS^=}`R86uVQ2LUR;>LNAHr zqOs#VRFo4-f-flGZou0TODgH*L(h0S`Aq;oh#> zESNYM@@-5O+OZQUW%&gY?Jq^f41)pH*!xozFJy00zw%G=`TSb}0Nzw$FPT@ zM%ap3?|x7=fZgwZ!cjHMz!EO~$-+7%}v9XU_8)+PCKg8-N-@bi& zk@<4T52Kz$z%PnR2*vk?_MxuzLe9FXR-GSI*HqmQ?z>xv?qZn( zm)UN6pUd|H?p@?=v6EsJ1yz{?1}wCDDwa5zp1c8vo+0=S0hde8!megkRx>d4fhXDu ziFIL*5ibTd9w#0ukPd2u@r=Le{w7&7q*!n_(!^^Ng~<{Q7=5mCvO4hv>#ER}h(D`X zRs$ymrTw=#IRTWFXv0sqf4>5i9@54kmL>o?2G!;;Z#Nv&_@|^MAlQKn{gRI3gwb=- zbO=ut_6kmZ(Gwm$aj$8XLWZa{e9{i^3|$iU10 zlZ9ilyzY~N@c}kuG{=PR{YYf&#+N8FL5J6R1qa2kG12S7gWsdx%8yhhEx1t(e4rWL zykjEAHJ8DFj1b{KO^z?7{gl??t7i3YD(?-BigCch@4>@g9iR_Wi#@w}4as${k2pYT z`r2{O95lJ|&SLb^({R?IAV5VWccYic=!xjZPv2UE%cO<$k>|GYV@5pQV5?k|(j)>U z2tLBw>vZTz1XEO;faZQt%*fQ#evN~jE7}UCpJn$$<1P4iSHQH7+$6-uLJUVb46%|Vqq1!9URw8QrPIhp#-7N3| zmDir_!PfUk#_l8n?^_pU^6RNG0O@#s4JD>M)a$~^_W6zq#{32BQnPSa>QoAI5sjWidf|O8TJ~d_RBbM(}|ThEw3mM*V(K0 z5sbxb)us->?NFoY@dMWB5lSS7A01T~4X8I_R#CJ`^xX0ciFm6G1t-DzU;xCSYZ8;6 zxL=Me4`L7$0LI_1%40)y=do}g4&264%*C}B*#{5Es`jQil-?w=$3NwnO?HEs5^4nN zovcIenBT-f%_dy-x|X~?4;+^aHUlyEhqNOHM8EWX8}>Uz87tr$2oUd0rYOQn_sK2( z@xNIa&iXzdN7*s8(KO_6tSkRr;TSD$GAf(zlxnw`3YP<<>)*xB4{Ig~Z!=;5nKS?w zw4^l)hBawwgLUX6^^I`+17nt^{+On4y&Q3XrC2bW35bf9ma{JrYu@O%Oi!+ay%z7~;`hl0JeZlMaUcD!fyoOL3RFr zreoMnG4v`Zgg+aE?Ey4C|Nl#@Ad-R6THyzBRQjal z`jbs=$i`3uxmVR#l5ggjNAIVyCTrso%MpN7urJKCLL{>@dN~&6LG_V7qxWbsC~jML zn-*ag*ueBcky}2X!s!4Fpl!M#){_vs>@6hXNTc~x*Fi6eA694gR#d0HSFI5%9o9Ss>L3k8BSjKG?}Qh zpb`jpZO83_WoAHCaNo4E{xG70KrpSXt@#;B)s>7H&c^WkwX4g{>mB|54M$$0d;;bn zOsD!?;697m!Sp{TSJXz4lM!PXrA|5^+z#u3_#?mJKvaXo94^MkR7^DiWCWIWW%bZw zr#^hs6hPu%QcjY(e%eh^wIy@xRI?B!El8^4Rh4f}?a^mIdOz`F zAhpe58w_CB#l!Otn^=+lM=<5$Sp>xpHl_M3X+SL&xc)M-Mhkl$;Euc++bK#$={g=jD-}v9G=0qF04>oK>ZHs z|FHI>q1T0s0ch%uExj)1!4m#FeRyaZ@PdvOEdVq7d43{5Zr;ZgI_z;%D5f#1f@X|f zMvKLmnA2;FU_c2qFGtp)SA@swU@v46Rqd9QAq^Rd^s=yx=K96+{#$h%o>EUZ`@l$5fAaLl zp>p;X_t+tQPQN4x_Wa4zhc(ySoWP2wRP>2>5IzNL%FlRop%~l$`w+|DJvpyMTq2|v zvkEpxXQ3~hk@$RF$X_ffUP=aXTnC20fohS?Tju605C`StEIzl^cE40;+79r|Z)s+= zB!Mn@wxOKN*R-pR0RzG+`aJXW(Se3ZexFcPl5Wc=dDx_%;cp!j6lyvUe4Q_cuTvUbJ zdFn7oq>ai>e+6f6t6pMeLyns3W$45p_2IMi_4R&LaT_$tk-#V$U^vJZc(3I90X6jE z78rXIf%ndT`jEl8(9f6V;jH7vgU@>hi32mBWGc@TO&{Ts0uhcfH^`O>pd-V=$05Q_ z+|l&Ss)|M$@#il{ZcI(b>V{DAq0ge#!KHv9kzRX}x-ZuWs87k>YO|8DfY{;QS}>(Z zFAY6IX3@f+mU()B@Z$klAsGvXSg5~1c0|7>j_7$K^?>kc>0!tD$195Z<{(`G_?(eg zelF|L3Mg;+c*TVfLQX;0i7)whJuE4yb;`an#N7!`^zl_#vWo}lW~jdWZBptH;ZMLl zzRi;54PQeS-I^(V5a6*ee0t$xhKv3A74Uw%9#1m$7qfm(5wpV<_M2&U7Prv!{N|ZE z!Hit`i9U;g-&q51;_`F}12iK97}NJlY=C+f=w?~xqV;rCp6*M}XWc#keE|hKGFRsl z0scmlYGQeMD#Zk3(B7jW_K*0Mgx7ohV_#F@?lcO;KD5iA<&%o-R>`HJQM_r_i_ud;QA$()3FVzqu`UNlMlA(!83}!07J2p-Hbk zUqAs*;nMDeGag4{<*cZjzEg^a*I%jx*IJ8X-jfE#f%jR_KB^M?WI0AM`obVe3uB&z z?c}@fjn1(?`1X7J!&<9_9;-yy&2+TmDymF>s+8Xx-?Ek8Tkkp|Mmwlw#Zr&qyPFGl zh2H46JH&t{K*-#U<_r_Y?{nKmG%otQPu$e+d8>NWp+oBVwVa37y=FyUSaiul$A5o| zYj1wS-}^PW<4J2jZ?L+3^uW;?7CfOd`IeLj9{kPmBA3P@w(4)d7Z{ebwYA;a!Wd`h z4tF&5VXrYlZ!g8T^YG#AD$jl9`&BhY8`b(=W-ZX`r3m#F{99^YRt#+)DPF@W9}yZO zcmL?Y*ZiQ(;9lOdzYppj-pdd8w`f#;Dh{e$Wlx_xQYJOMc)91DCWqsnVKVWD=hp?u z=Cf~fyz$=k-cCyaR!JvRQ`84;y?R)r*AR9M+Wj7$jhd~inH{wEYyZNOAKhx~1fwEE zOP+p>`um_!wl`X=?@#Y>z^&$>?Y>f1!DE>#rO|OqV8awz2PZO!$FI{2Ib^03NXDYC z`m|MVbR6|McrI8n7QPr9b;j_+#)pvNZf|Iv%XsMqL_;j)_FsLzyf?Y5@Sw)vUP06s z_j=c_reb4j7z=DCkxM$%k7VgZ=SzPElJEc08wLD-S@lu}{(WoVuJ%I7SWg(+hsJyk zAAvHyUgaA!+UPhG`={di?>9`*%8gpBbGh&!GyEp)ke|rxyZf!&_wu8nYpQzld_P#w z#?zk$^~|taa1t82xUpIZxPs5$=d;{tXDbss+rmvbFEP}7HgiM~JNXQiceU91!T#>r zbZ(*0cyPCpDS_zj1dc_8Gu_&3y8s?4I+u4V;~8NfbEdbuT?1nzo*GJ@L}Z}mUQwYx zGI>A*Wxy1$NE51k`n#lpP>evy%cs_$n8;dLqL}Ma z5yNc3+oy;64D7j3&+&f7#AFMlA+l$gw=Z394Pv>#+S)xJL#Vaw^Y8scc>%?2^Zh#R zUd+F*txf!#PR`N5sA_-1aJajcYgQ&E2czsl9bsW7}_RFoiFciyT@M`!uS5{ zsDLivu%K?u=6eH-vBJou)3~j!zv|#049hHh0aDrRgs1l-m~0|LJC!JJ#357n2cyDH z`;{}B{seH<7mC=oU=&h^j86G-yVpTC4ZVz#-ed*y{nxYMGK`Ij1|nMh4X(W_lwf5h58BA@74SRHivCXrZ}(&=Q9L5$>!P7el?$a>9Q?xS{`u-0MpRtL`oe=$ zg{l^{@wVj}n9@=Uq$0&Ebn)#eq6-pxz#du;imtLvR=Q%InHRaVS1sGSMmbg(arcHH zgTnnrwXcR)6kEwl7A!-8ry)kJsMk(+it|D@3-%?nVyE9NPzN;ZV zzprP36b=;Zo7Wq`;lV^0oFRE55!536E8;E`U8r_(>v8&*`x2nt$an%zW!G5O=c-bL z&+%sio+L9%e8t@wcE}7wq~~dY&%3j3J4S%jR_yjq!ex>;mIlHut#35+XcH8(GBp&l zrA84_*US4G`HS)b@ZH=tZiw&wxZAy@BHL3qOoQ(#ET{{n5C|D&$03!) zvfMGC5*TqHdh_PZ#H6Notdd-=pg_kPU2A+Fw>fKnYyycr&e)ccXR>Tsacxw;dFCGR zkA025cI!Fma}9-PY_G*f$uIcZy5$-Ci5u*^o?%`Po85eV32o%>ToX{2zsV(fvt#~AQ3wPMt9koAnIM56 z4h;)SK(d(I>N(v+MXWuy#d@R97InZvz`K<@akI|F)@H2YrLP^uY-7!5A1-tC?tevkH zC&LSDToU#v>%I-1`19n#hOpS#K152MuOn3DGfC{-nbMkX?j$G+Q{2RXYS-RnO4j=| z1~IGn&08^i?~TC1`YXXni}V|uAe|aAl)x&0t8H5qy*cXj+Z?tfeppszvBA&lho7~> z(8-O%m$cU7zC)ll*O9hoyG%VVJbs}Y{MIwf1YYxRaMyaIYWR0N9OxBe{H z>u#^ys;?)l6J*+794&zTzz%ghoxGvw?aubIHj zE=cUYUKr9=L7`AvTXg)9_vuc#0OP9N;pxDQ3Jf;&?)F(gJCBPyKUyiWcCX#=u$v;j zjY@cLSc21TP+r(!PSVr!tB?FoX|o~GJFiL9VPuXs&%@$ht@_q>P*sXKydZ+Qt7u;8u|^x{w>txjC7CN^Mq$dr zImRlVnF{=jA|MfT=xPdFBPPVxI6|Ov$OnLP;tU|RV6h=i?Mvz8poqEtd^#2umWfGY zNzK%bXPI+3PcYTKPoa%?XLjh#cfA?z78y0V{&xGPhs(OEZbo=+?lRM05KO127>{u| zUk=tv3qt3wrk5c^xBF_0rGP{(dA?uX8;CvWZ;Kh?2|v#^(AN>KYU z?85#~A#jP8JC$iJG;mU~lnqP9(mvtoAc`a3*<65_Wqfb8Eqivvi!14T$%gf2;nIdB zLKx@Fyq@}b_^S&SEIpP67lQdI(KJk1b~(g_8%19b3GVkcH)2s9FaMnv?>^4sHI#mS z(250`L^SKisy0qqBgsCi8&?ZC-J|dw&hRIM5PMviQ=4i<|AUoGfRBw&{{3(EK{C%L zGfUyiHe+G2_xl_vfvUuXmqYk$jGsVTfaBaFfp#Vd=P^+jYX>Q+j`3y-tS|@vA35c5 z^1b9o(Dc62K0fVD>@j-|!(=id@$1;GXt+vpf%tI4!jI0hq3xg%U%uQ~?qogVArQJx zo@63?d3h$P(LwmH``7ImirO#(=Dqk0gFu$^_hyBr!jw#GB1LU#ML*k8mDwggDl)e^ zjb|c}*0b4!-M>69&u(w&9?ryzB(q3RVJgDWIzrkoS9*C%%!W$R&W>BmbzP4(NGZ$r zheuTPv}Hnp)d);X3pYGK^6ARtVWV z@q&+2pd`QD&`WVrRQR4XfyZi><&$2sD zpqGt3&7Rkg+$Zv?pNft&?|n}e5DWHo0w?}cAz;BN! zj*F)*+B6~o&OmqDOmOc9#ccEofNY4zZ=SP+wvEFY|4d!IO{PJw3d={**IcHsid(x; zOs~LVF!_HT|KUO?f?^ENhyY%Ww%v^r^Yyp{NTC7cy3V6Cv~PiaXfag8=Dv<$!>}d8 zpHpx@RUv=nhL6@<<(a_1z&T*Qto5~LLpGA2jCIv(o*_71_<0DWNJL7CHBHyyorizq z&eajCl?)ZRC@+_}V4EAa7czz4FS1NV$=W2#W6z(7nK`aj@oBreiyk`f^ZC6@r5GwQ z?2M9`$Z$v%%WHMWY%=s=uWM7P7OIXv1IM|(G!z@|uFrkhVdnA&m!*-u63}umDqI(H zURSRzMv1jk4e}6Z^K;Oo4CgTocKdF&s{19*vKVi+c0&qj`A8Ct#aSHoeL;+s!w)V8 zLnYLCjD~j3zZ{2qx|C%igD{mk58|9A=*_89X0*AScSex(C^vO%{vf*in>9;a>cfss zGfz8%J#7D>cuu@NDYHhMVotD_FdJ)`fb%iY^p9h`XuM8lm^9;jjSD$hX1G#}%I9Oe z_$N0kdz|@sZW5o?_Xoa9{H&GN$3177<$!tl=yvc1ANVA7Y0%!{F2e>7yC35`b4T7V zHQDLV|NVrkRH*2wa> zM1PkTE>N$Z>%Z+~-XG8b_7*b@$Nl(OOltG?^Hz!3SV5~g^x;kH1r4zI!mhz_=s3{0@W+I`0X(PeqJR8AGTR~lXN7sTt6sb0ScyUlH$ z8K!jaf%%2|uTM_Z0LWd2TZ<3iO9#e2T>EH#m5hvRVzN$>BenloW-j>I+^cV@e^%#L z*PSspH+Pup@cDFwEpu+TR_U!T74;5#z!G6R%xKYni@pEj(pU3GHygbwo+Mu$=5Id> z9~}0L-7#F6oCSh9cHk3BnJiafoC>e+Olu;KMXw^rZbYj@N0vFo5r{H+_A^d_qI~W{ zuu)BsINDh5SXXiKU{%-0vJXTVai+qTmf>dB%if=}pKasAyQ?q(7y4UtFKZhR4=bBK z(a4tZBA2-$mn-p^IK{2%@{CEuc8x4r+tm>;pg$ncpf}j-wS1BaSDUQrjR2{ zOiHKn<&D5c*TY9^i+Bs_vFA}&!v>p1-Q7p65-$jNlFn|~{F&7r*djo>w>UK{pIIjy zmY6=e>i$|RMcd9-ptaCX<&$aD2)_zbv<8@|0A96Pt9a9J<%E;SIl?n$+Qq@4e>h^g zIrc?pfzO5Nhuz`1KnBcNWn)}^y=#`rUcEd~D>S*ngZR@#WlRWJp99k_-?;fo?VV`i z>n&b;?d8@9vym!NHr=AJizy?#?KE^-%x9O3%hl+*t{b&A2u)l&z9z#mCM5cOEAPvL%f>-j>qNBeKpv^Y5d*P9*_20GMNn% z9Zo17bu@Y(8WE%+gK(L-ljp|qQVAqcsB`-}{|tNkm~48mWf===F&%i@J^by69zy=9woeUx_!aictppP-=c0I%Mj8 zcu;79mm=0oL%X=2oouq4S~FcwfL;qfy@UL8264$HL9!B38dlaIfC*)!b>pB*N!*D-;NhEl|x_nZn1Pj+pg)r z$tvMkd(2f3eb8hI7I=9!adk#(@5`ZXbLb(y=wo5Ee|kRbciCL3?^bJ8+n#|HB-zlQ z8Elv~FI^p=#7?Jw51mrjfks4RNRn7}TA;;in1>*08fyy2sddfQZAPf3OY})``HXpH zgpBL5CQtK5#|ZB+&Z$Q4u-G52`Gbj6`Wag?XSmjg&$KIi$jxST*sAeUHW?mL|Pn?-~+``NmFxwCeDWS5D$L;kR{-7@Z$ z`M}zu3~`KQ!V9Z-oWM10yN2tmjXd(Wqr586Dq+`n&MIa$OiCCG7c4wF)IAAq=w)tZ zD<_e1{~_{wnYVtKb-w?-;dXbLf=>wMqvU9fSKx8)_SIM4s-{b;fhe^BRjZQzU`!m| zfy8N{$&I=~4mkQO?Cks(_ur?)%%tJY`0THC#JHpi5{&S)Ut=nHkc<+3P_rt!C$w?L zCs~PcdkX8&nix`G{}UCX{Rrl#V!iRc-^BRBKgDxo1`fGdyp>F4;a?6;%o{bgs_hU%Z zE)H{X&;T9l8-MF9fmWVoDkB2RNJ!k+g=zxD5*51|@vUC_X`KWBfyqdUJ1j>{E=}z4 zo2(w_)U|Rfk|KKV=H-7zg06pwMi;;^MW027$>4+lk@?E#syqCdU?fIc+8JwD<1n!Y zxQkr&!!F7DbtVapbLB=<{hS=vcU4K>H{D`zcC;xJWd(&N+o;xAtN!S6y%E3(>L-WvjRpM%6@RkRL_`{tkn5DMJ&7?5NdXB{s-gA_>@Qa=5n zn@Lc9=1^{b2IZyjYo(rAAej8)-qLD^=XR*pjEsa^y(r8qid`&N6%7h5NSuZ=;j(*3 z;Ku>(`C;jH%8G3xk-XxEL%<*Wcp+Qm)2*#6m(=U<;ra)Ymmy7KPW8UI>f{z8 zb|>n^`PJ8YKFJiryzTT!cwJ4&=CFt7(HTjqQt$Rc!~*bb^ISwl zL?Lsp#!4IM}?vPY?{E~+lq@U*W^iK)Z@c3Gh(tk#N{BaRI3TiylM zmToWsN9cEH#+=Kht|HUTgVjBI`VA$cEgOmI_g1%=&y8LO33N4%cA4|t4pk|f#Y!=1 zKUZ!{)z3>{5jP9t)L^cijLCz5WXfS_r`n^}s0?Ib-_@pDS1Nn@){rwWtZQ6C%ZD1q z#GG7GWbAXBzlS4Qo_nI44Gx(JNMPal2uB&?&joy-dQgSz&)r8r<$37_@U$89U!Pr~ zt02(OA;xN6v4F%=6jpprbc8(zJ0CPR+s$VTO$QB#cyrKYsXnt86Uku>n!5@~63Q~R2|D-iGsqj5 zLLnE20tolt_js6SDA24J@aPB>i5|i&ot5IKYgk;i}ovxd9y(|>+ z?-q)?m2)ep;8j>P&*D5l4~)>bed`)5=~Cf>p(`YNE)B&Hzj@BN9{oQQ*LDC79K9rE>q#+Q@v%tI;wYndk|a{$;a zf1R1o5c>Dc?zq+a9Ovw2eyd~JJ7!EGggWdar!8wq5r}TlgWk<#yjrj zOFZ>zwp#~1ZuF?b=C4<)!>`tHy{^8r7qj1=QrX|kG<=!s zO%27IkP(cXg=&aI-l!h^zUJnbmqfAHN(o$RFP5$?(80r!zYg^gk)X3xb1>iLi>4k? z_&J8Ej;+3wRs&?EA1~}B1me$@XUQm-w7oXJc((_B%IE5Lw5#%!A(qib!!in!p_)(W@*e@PNO-+B2jLCBde;kIBl zjanTpS$j3Zq^E)1s7NKIZ#O!ReF(h_tPZC90ZdZC4Fi>@vdu`O58*fX63BVZ!fT|I z$_;;aVbz+p|3Y>EA4xbo;F9gH048p?4GYiit*f;! zBd%?Zv_maH-E)tA`8|9IB0Ys{Xs%~u(rTa?!g=n;0X*ezdwi=5$#zoe(TSoWuFpIp zQr3fB#l^lkUU*6|wM!JtVk+3%;v2WlqWfv}FIX~nr59bqJ0z_J8eXwQq{pPHtKd+Mi}wUrR_M2t1`-gqD(<9!0Y?|W1-_6vb_eniOAefnKV@iUI*X+*r zN@DdZ=sNrcN2Fwe@dDl0I=DTK%dcBkB0;@A1@gRJ`zK!FReFR#GUYjyz{74Bf%*Nt z*4NbWz*}(Z;s0>|?L9EtyHuK>d%sE^| ze0&6E{`rpNiAfuG5_6pMH$^BiA@jD51iadg=uIp zbDYF3(-5JQ97k*w(-~mi5v=$) zdZnD0cVLv-B@RVL{#?}~RsFmiX}dnx>F4X~yS!p5DMC{ZgZ8h2iaCm$+d|*6G_!%Z z)tpW}qDOW*eLUs@Wjv?8@99Z>(SU<=fkAHOE=zpRFUhcqC*7WHOKNN#v25IXl6pBz z|7OGi5v~KOifNhB3FieiiM9=zVbwvCQTo(|auS(<)$9Kr)q;j|wHo*ag5{PJwJ+0u zcAH)#A(2yVvr>R%DQrHxL=o#_J$&dny;|7XSX2Jkx?cNyeV@(DxmCF##`<1g53M&x zAE^;^)v;e+F`m0_RkVrUgDaFB`uI57HPJ1hytLf$9hb1?Y%7dRp!TvOrOMe_cJKY}_5*i*1dh6kE<1KBhy(@nM;|Fk?fl#M=A0WMl`@On-HEPwMr*d4?<^ zEF}`h)baL4_kYm>v&Y6NGhrq|fn9&5)t=??(>Q%;)jyk0%mHUa)>~5l#e9gdpd{b* zN#BP(r-H2dT6JAoO;3)x`TC&hYyJt*?f~EBua8wgUgj5}8F^$z5Is8< z7nUh@xBe{sJ_!y+3R)Eb{spo1JBYOkpWW|tNS|7gqk{SOTQ5$_smzpV6pvO-2 z%Jp^ut6@@cWt_n?xQg;>GLS9q=!T$u#SFp44-s9Jhj5@#$~4JbSe5(NJi?g12o+Tz z&>o4(U0djUpNKb2PV1{K$ERzutI}0~aU{UXmifEsKo_=-dsSszXmj$GA42tqXe|G5 z{*@xr?H_mtB+$c=%}{nCzWzTy>8AAQdL{Mt{o@H{ZoXd{*!w}N5ID8Vw%i@(?_1oA zpshjI>Ed`w?lU_aiU-4p{|JKDsRN+KLRfXRQQ;Qs9TZ^(4EMx3<^&D^#hDBUsb0Yg zW~8bnF6=DOnaHqDK6|Fn`_?T#brrGb2a%?=EOLp;QSSd%?*E#cY;0~mwXQjVfx0Y(Hy(ID&NCHbA`8H^(ibGpJ@zX1F z5gR?(lA?Er$w7D{wM2fzD-t6(6a*oO(C9pHD$b^axp znqo%KjIe&w?@i6>UVsu2?9RANQL4G}T+19|#>J|}MOlEe2)a-90# zFqNN7^a&bXGn~FY_~l7G6dVw(6d9)gPsa)eLTk*JCt&lyY#E5@w##(?1f6=PvxsCg zElZx`YqA;t`~CC3?~;VtD9k}1f042aB}$*9F?U1-nqy}hC2^t4w=NE=EK@$=+*O>{ z6y(T>s_P0x$P%>+Br!j(Dq~{V=g)V}|3rFxN2tr4nJ6NYdJmL&F&!Qqa>`jc<&M)S zmQHKhYHuJLBZiR(-9Cjk{XjH2oaX{w3l`aA2B<(TT)$QJIZ>6}x4s z$mCV@4|T(0_xC~yYkQ%0QMEf!ga+9jk)&E?G`gXWZ1uny&}itQW_rEerT$|zmsi+R8J54CL*?FpV@ppX zjyt1${xvDNCv0eaEwX6jxw#_5NGucEW?fqo+G7Y!0jCGIPk`8ta5<`pkF&{q!KB-s zy%uE-^EXXQOtu95t7l5vixhH)B}jrL)rgl=#@TnU(rOUaDa^Mq>ne|(mmZiB7@dM4 ziErM%Z8(*Xl+IKs41}5YvE)Fw_GNgqdbaJ)yPDxiNtEKs;1(2=w#(%8@dU06q&%hCd)p4uRs70fXwf(LSllQ$xvh?JBR zxULTLezThqx#*yS`8F4Q2rC!QxK_IUa|RsA%(nF>JaJ*hT{f0oM_ySOHY*%G@th#+ zDM9Q?!`guvDHr!rl2hr*4+;R_E>M4Buvv32gu}cJma48vs+#v(vi&E`PgF>+N9(6Q zPlS)`5TK>wFQ`2^@uap#{ZF|7$4~$H_!WhK3Gj`11?Q#VeH*PS8rh16)xL`AqJ2hp z1Xq!p3HBy1++qB@p1#=~ZS9tSeY)+j8M0snkHBZ4C*lx8p1Q@H-oVgM(_ayFF|%B} zJ9Ra~4&6%A&1-KklP!VTq%jTdBJd3_I>SzJnv}l&HJH_)UlSLq#54%C)0LpFZ@_|^ zoQxiQ_y({c(Sxl?QL$ehwJ*~MQanP+|C9wC0k)cwJT#rp=RGftgY&b@vJrAfuz1^W(`JmF~qRPHZ`Bo{1CxkXOaCKD5XSF zS-eWYWvXP4je*t4c*(0_mT<+~aK+I(E3BNjf;_xtz=)ue3z@1=w#_2KpcdQQYxf{| zd*aHL_^gKGfX(CjSM)*)HxZ<1LSI~X zx&wSv##|G%tV;dAeY;s3cJwf{S4i0PD22C^#$Zu*^TIFKG0rZLjOOsI)gJZpnLr1_ z-J(`WTs?KOu;^$R0DWuYbZ$^ zFiv;rtWp(nuZJ+?1$f$-<-vc?Z8a>2q@fN5dZ6S80SpGm@0B^=iq6W z{`Y=M+awTVW(g{6Xf{j?%lr*JP-=JW&ifGV$90U4`w^I|PBmV2YOI5I8v44E0M!P^ z#r{*Dn9IL0=H-R(Fo6_FDjPg9$Q80OSszPXg}aUu2(idhsM_Y_3gO3LU8N*P#tylI zQMvlGW*Z&{1-dlIcaLVOpB(%&CCo$s?te@MM@2QK!Ta{<);Jzhr;VfXugMd zTjts}$)2{$0gVj_IPF|6xW~Jlk5kX(@$rIkXTiA4_pgOp9So*EsAP9kd3nL?D@3x? zqI-b#EbGqy;)s@pXZ-PDtBaS=3m7-_JT%DriH{uep|eDPB6175edeEyNK1f^1A^{& zlu2x&a3YR3$MZ{u@$c?+f7B7-N5VLE^p7~t zA(&36MsC7MloLacf%iyLAoF_#-MzwG+*S?Eco0mcr_-L^>l=jP!%?-z4T3YuX<)H$ zn$lfrZwfQAzSYM|n(AeNMPdPqbQhoZG z@brN#l#q=CUloeze#k2jOsd82avsQ?9EV?Oj8esxqv3HV~>>=ng{^cu_n?+mJZ;`%^qB9jgFSm~7iSUN+#y0%tZKjh8o zeVLIyCkvQB5xD_Lk_vj}W_Rw~kpwHq%cn zg`%G@BgdR0x3;!cr?-X2xj`>}-T^a|8!4Siw*2(SM!pglZOFE+w1l_YWMNvH51jsN z{TJW$*yhTpBndwy6||uN6hcXA?G_&W4{`SmA*-@^#=xMU+WKa1#%gSkKlPuGhW%8e z;tZ4w_q-tq{XH;3AhYv{obB(eHAQAwVb8G_ueBTtV8G$&K}s({VI9G(*2$fV^)-A+ za7Jrkeu;*sXi9bA5(>VW5xkiO#klGf4yqOauK3eP&CBvI>P4Ms zy0cZXKY#9#JW&;WWHV1BqtY>_i@_Pz^N@);+ib5mKyp3ujQ*zs^8N4J_3&(jY6vOy zkcOqz)o|Vf=db7L8V1xkCf55x^?|q<6%|GL^7x?}{YZ-^%;Xf>S}erNAQS}}e#L4N z>vX-k&pU4m_THT9=Ov zmi0t+;+EJ*I#rqmI71Z(tPUSirqQBPkK|_N5_(7NN+=vI_U40Ea)xB|zejESysO9M z1QbuJIdzFQY*^<$y?Ce>$ptieZ&&3sg;t+_NWgwnL4M~DKYbQWD2*jM=ji*iru7ZU z;R?0)7LtZPtMKxbZ~FDmkgot6{(m>JP_zycRY0r9fl7OI`3!EY$B=pY^ukV1OO|np zSy*Y8$?HT2B~ytQ3~M@zG8gA)TS{HKmb+W!v)il<)=zWo_K%d&qa-^wH{{`y%`*)7 z01eK8G_~-6a2PW%o#~HGDR%!1;qKMzvGZZ}Bti7`NP>D2==j16Nhfl?1C`_6F6kO{ z$=A3o&p{0h?IPT~WLueI-~ogKe<@4}&c!($jx+cn(fRz8s-mJ|ZBws~pJ)xp&QdZh60;fNB0do<*dqQcQqCo#LXzD`{a4E|lq;a24fA8rCD z+zaCM?S|t1-V{wl1~S~_4)HFi9x)6`myd4*vMfmx^7?5}g>GlZnpmKWsbU7^N$BA8 z(yw0yZoRK^{}ls1?zTu(c508zI+c0sLABktY4DhG1T)B1i2bGDl-`swVsyW#a_xhk zZH|}dp%D2jBpQXw#$D}0*RK3C{ZGEb$GEPqe|^eibL(G4wl!9Quhc&iB8uVz@NKV6 zJRK#iwUzgSaHarH4>L@Z!%-P^Xm&t~ZszU%^1m07hxmmOAz+`~Gg$&(*gN{e{HylI zR7Um?pRcPP6xZx`30O33BmPlkXV^WGR!$8>*3F=e%ahBaDVEVPt7nA}>rzTe%72HZ zhe}4s?2=2|-7$$+s89e*l=S4t)0U0yL!{vA85IfG$#zgP4_~#rG(wmiLa=onA*|z5 zRTMHXC`oV6I8fyJe#bv^^<)IiwP^)-^Bar`U&17w9aSZF=jbuN@gxgt$V@TDB$q;t=75a%hnyl++1&%oOLk)|dGne4#D zssFzCz4FB`cLBtbVnp`;CNI^c`eV!ak59G&BJBGQp=|bv@1eXq0*0IV^(5RmRx=64b+`C^dw#>_7Al>h%s(-4 ztCl70N%|ia#&IEPf@~(&_y}&K=FJQSFs+7Zf-h7vOlLf5@yL%s2>h@3_BaY$#*g9a z-b^;l>zZQ)8o)C#+;oaH{pD$>fhQYN>{3?Q!T}f9bU%4 zPrnNIec`|B(ESOCDAYz$d*bu#J{c6#m zB_NQ#To=9}pJD1VpSUx5zxRWGC8Hy>u%>_oB_XJK9Bt~``LO{3ccA8)u#r2iqbk~; zfOYFYWk#uZ_8^wibgQz;>6(EmkgVtSmW0?^Z&wci4qQSnBE=if;yh3J{ji+vC48qL~|~!>_>9@ra06q4czrrj!+P z0qFR)gPU9+bJDGE*V+$+Y)~eqW6rqpX#DWCL5noVR+!nh?fsWY5+zYz1OxS`JQYt@ zOyb3b+u?}Do0|7Y(0Ze^ocInL5piQuopQyoppyb?s?VbNslZu-M~6(Neh!5HqiRKQ zB|qXq4T8}FWsPNQUH)0Cf%S7YIJVn{R4|?Aeg@tm>KWKPlZ~DOI;z>fmi~aIx`C|U zmM~Y&FrBN-zX#Cd>j07X7h>5ma6**%(jnBv-=1-`Z2pM$vCIxe*#=;hc~HygYqByd z%hX68NzJ1W2R^Z3-?21H@#UXCUM@_0js*(D|Aa0Kf!AxonJ*8&R|QM;&D~~8#-;J4 z%jY<>=~ig{A7M?ppf01$|p<^#4fvYO&q_+3=a? ze^>n0NCR0bQt`ekuQ~{Wg)R#4Aec zE1#=hIo8mXMpaf0m_y{s5^XPxvb|ti(OM z2N>^<#`z8yr0K-17mATiXA61#?yUo2soCHkp*EL(=xuAEkvOV9Ka8kjq`QFN0ejN{M85o zgcd?1>^E@!O@#pY}#ZD8B28y*e}YFm?_`l(uj74sbfT zrisaFc$K`{^*h8E7Ti9iLrTXi63Tj*{>^dYIN7}dV{yKhe3_V-gwd8YL^07<(swa~ zV(;s#Tp76d$f@L93@_aom7NbVlPGd=wCSg3qj|jW z6Dk)z1sAz_1CKrBU@Zra{5sM@3MV3r&A9q(m@_GZt6aO8Z3!9CN4Hk=)|B+E*ml=7}&$W%{Gu%?s zIv=ki)VUSJCSg`v+d|Z2wC|gan&U=qIFR3>gxr;T2b^ER@0E$<>OXpbF^S$Rxa>Ze zso|fj9jf*I?;i!jn;3E>GpC@+5U>JpX=riuF`K`>i;cK(9$wM^rARV&ANy(6yQ!%y z5dST`>^pGa{DAU{{HD6F z1p-N34w&jAA6R^WA?I6r~0rpN5WmjeA{ zlxJzikMhOilJs_mUNJ}?dqLE{wWV=WdYoj=wWlMhcF@1&x$u1;3+k1_%f{VRO1>~u zwCf$?TWm%sj?|+gNNMY>gK*gTt*=|v@ijt(VyD69;nCcEBAo#H|0g?zzR>QQhic8` z>3Gf<-rb)n78Dbujtou|RKrnnD$@^|{B5_6pSG}fG{S-!c+$@WXWL$#LY)Y8pXcJifYp4pcCF7SnsP}E=)-eCAZy9d-o zH*Ff!kG)|3jFi`KZ}`~Qc`)&{4=2B#ln7t8-vl@CbG>qX-vYwrUwGn>^Yy#+jTXtu zZniVCqdNN>(;~3Ag)(?Xv<=H~j?*IeFE5>qPI7Mtfl0c&>ittT=(@OB5@u7NBhul6 z5cf#j^pq{!YuQAe_2muv3gAz!c_>4a>8LJ-i(m!~PVj!gu#HZf4zUZrFBEVnv}8HH zKY+vI+nZrP1O2;%T{&RZe0OTL@a!6T_h$0LlOwmSw3e~>1u1Lp{jTCBY$CFq;y7m) z#y#{_48l;lP5{C!zAKaawzW7qJX;R~LzNC)+rG_g0ate#Hi)D0j$-U*1w)n-YqhuQ z8yXm^r&l><_R3?B!bRK%g|oe(&ZRxsyeY+|CYDaGp3ug*5>g41w|SFXqGdUWNv5hAk>k6onw zNSNFfN0eV*cBeC8!)+zp4>Ri!uCK430b&xHALBQtpZMVog(L9^MXDkQQJd@=wqwtf6{n@rtH2A=@gqsmyUM!Wr`CRKK%OfXxVT`fiE{Ba`_M|e|hbG ze^d9mMPLh+8gxhv&DVqAXv?-(+0IuopLlce#LRgyYxVf#B87D+%ZXa-|G(wlO)sNq`_eDnWg^w+p@;UC;nz~OKz~XHuU-k|A-(0@hdNiu7 zLJiCgUG`oiO=pnPudQWrWVGH|ilMZnD4}(D(}EkfeFTG510*GjUa&12odzzJ3O!TP zsDsp->h@guOWtTVldIJ44Y(4+d*)NS0|_cX^}q^1AA5-KLdTs#OvK`R{K4x-+)oQT zMsTR4sl4#Booi z=whwzUez1&WjC=Mx=fHY`9A7HVa(R0eD^5nZ-mvW%{GN$5xV+mMi=HGc;2o{y>{BW zGN)9SI4~qIOW^XwRW8*6F6Ub8BK;yfxU!qM#l8Dh(QRMNnR)beU3kDS{yMBfKu4M`k!30g4-C zp|`FslKW6)z?CG+)QdShNS}aZI;l2-U65+lh~|<~Qc+wx)o1=Rm7mUx%&wF^X7lD^ z??TcjJAv5?+(F9pxe`_^?pX{|3mtR2aQc4lYaoE}UrKMm`MH$zw+zapLF}BkDLgIu zh!iqu?+M*B;;u%PgFSzL=Yfm|0r4lHDbF~N?9WM(W)#Qq&9V8JL~(>lOctD(=Fot} zDZ2|!|7J2eXLw3dKWJvqOxfdW0(22JjW3bq=<}2N_LQWxH_zSQF2-;re||rJsyVf^ zSTsz(ew>UWnzw+{GPsjYGVfkj|3ki1`ke{3;Ob<4^DMHyx#Ztr4?8eAVB3u2W`T2e zTZ4c@+f81v(rTM@1>Me2Jb76?d)rJd2+QSp^lCy)VW~QDqQ8HAhf#ansW*GS-LG=W z;kj2y;;dMzxv*u+mYY#?MlY#ic<+Jnz1=}DI3(Ml_u)^jr}dM=kKq7&!UE9&)}l8{ zJuJ$5o-JJ?5D%LBY+T#;UpL(G`#uqBN3HVIkdDmKF}wfgvD9N*&Do>2#X*UtS^-Lj(4|Z zsBp8LcFEyUEVc^-_DjPH7oKe1EgL-oPR1Kq%^pbNNt|02KpvS}Ye^JeoLGEp*A(~| zT=KC}GuyL&`AgZ8x8RpxBbK+(t=gc4#56$SZIy3Uy_`p6_;=er8l~iDT6wumpGP~rVEwi;KQ+xzJPwkL ziXvhHZ4wjtt(;pP1gKmvhgQJMB92VMO)q!CIBp?yy-k&Xby5FJU%<0qzhIkdssO9s z9=xb*)ZH~Szj&+%2n(Rq>%95OipH>kHbvQOi@}p+8r}SrkS0r1LWDJt+cduFfBoC8 zT?Bh{7H2>xTY~=3iW3CrxsMgtTg(nN^p^azV~@BS=zBiLQ1ilyKu_&zE8{~0?9s)7jkp;0COy^c(wZJ84aUObXD{jA2>67lRN8|-J zly_A4&u>QZM0QaWE&_oftJ${8Z;hWF)cr7XCnMjkTm|quoFJ6ybiWBdj>civcw=?HQ~7+V%;AgILyaN}@jfOL=TwWaJ=JuNb4%G0Szu6j*PC}c8(ExwY~_S;n?H_$@l)%Z&Pf$q&olQ`cOkf37MlCF`Y zN$&}f4N+U2L730Vd4)&lwsi#lnS))@vs2|&Bh)D+;)WTt=P}BGNxO9W0xyqt!7h-h zjrG5jF5T`-4eblC*|dxwoJ+Uo7tRElZ4AOtP)ph(Zd&Nyb%s46`4{6Q%Cg_Fd&$Yh z=H}6x4%)N{!Nvei3+hcEs(ARrMzQewqd1*o6epzL?ctDN#jS_Olh~_QPu+1?pZN(3 z2F}1`4~<<-eehK3I1bjXJ`lR{`PdKGwlE62G5=k*K&oCM7(Ox0wfvjg(Az5Fk{6z0ZUmZ~M z2kP`jFkjzW?vogy+X+EG1^PXsz*fJR#o-P;0WkG}tG~Sbg_$x%;`9L{({m~_mO;24 zi6z|(tFK9S)^cwb>zEZu`?fmafzL zIIkBs1}q5L8>>Z|W}SBeHhVfl6KnPLn05^B;QH_HCsAn>{9d?`2>t7@SO`kr-bDf5 z!nsP_uYp~v%)(U*-DZcEnqq|dN}F|ejm_TKdA!J#(;$j}Gv3Dy>Khnzq4qra4WyYE zJcLm#Nit~zb3ww^9FVOOIjEYrag?J|U`z;~3{euAd~%-rc0y9$V)}CyG^M=fhDliD%a4jqH+9S5E~8(7ng)rb2Cf&pzRi#AEiXT7O!un%Is7x62c-<3a~GE0|Vk z4pZ)bv$V|AXuihCUYbAe9aSA#kf_@^+%w8*G?z%%5b?RI8v6vC*JDjw>9 zO8X8?S0!pdio>35j*Hl1k=p58i+8?$3l(J`78N>hbuV5ytN0sxEZ87^pDZk1#y5{dXqX z>sr&KO)E2lzMln!XWh$Jg_7Ba7)&!YHM|EIppY!;exHv&u;2lFe9ElAq2KXuPb>Yh zMeZALH7->5-OZRNZnh0k{(LAIz;-BmzG7$A{?*qY_H_COC^v_2Fxz29`x1y^h}xma zI&r?V{p@XYb4P18AQariJlV3{13r>r0_zh`fe+6{vNl;LGu_D*YVq(k!Gk(9Devbar` zwJ`Gkxc|)>kYy5RU9)-K5B|^%d+CULU9+hNT}H2a-*^a8A?=$f?qLEQBOd5Z@zk=& zt+feNYv&^k3okBi2<6jNoCQhPk0im?a6fG^lN2ok{+Vi*ZvYa(W-ZG=?ahQUJXwg5 zUEaOH2eKO-IGjx(Q8WUfc^_Hplq&lWlBHC>@2~JK9mSsSKelM~>Mw05-IAKIcLs3m>GT-H!9l zsCi!VkYAK{jG1`SG>-ocvQG(JRrHV6=gdB8f(ZzD@Nrkmv!`crd4Avb4$W;pW>H$~ zrwq$&p@!QaiCjF9{2achBBY;f&R6DawERnOWKzD;t&rb@8wDCeq2mSI-1jyKc-tJ} zZh7`4cgpt+zkz1h%33zGCp3l2g<0hy5u_Qmcs5gGFXF~ns{0Ekz*6x)x9P_?oz;1o zw_VAV}Y*@7I@jG9r2X@{(`{+{@Zb^~v?Gi=&Eeub=Kpkr(b+N*PBp9^02YJ*Zh z(O~p%i*$NRQ`I9ep6;&S60K*jD zv!{_-0Zq8oP+#8(jm@O#_3MJL7|$59{p$-&D~(wO6fg=~(3;YhgG-50MlO`?$}*u$ zXO>il>N%`@d#o#tTChiy>ZPgllzKa>T>P?`v9+89cJ@YqgWZzxiBzb47b_B4iz-6U zmbzwSL>M6kAA{w%`g2HT^Z#;`3XU3f-`XpS-oUmB=Lffx!{Vjgc}^A0V4Dp}z1)fi|e-+{ZN-V*K_R1G7c zk*>5^`%ZzgxlDdvLM+iBb020>|AG9A35u0*r$a*;=)(!m2;neOrBw8eJt!;rqp8zO zt3ULikC$J4PE{#f+sAwxgeK;Ja$+Nk63Ws2rUxLi-;H0O>r5zKgvczx4TX*oMLwj9 zlqaM*a4(APpZ30xwQtjPa{NA~fG|kl!ZyFU)*N&g3Js%~Z({|;+RoaATrVABf;2)B z@5?r3`1SSV<0Po~t3XN9#A%~kU4AD_y~;!6j=)=AJ-!{6j-#gev?bI zBWrWh)eVh}Xyt0u;ingJ`rCgiu_Xb)h&pt{#vOQCsis+|&gDUe({J1Jnq| zmZ^N@=Tlh4tl@V!xD(@a{0@M$gese>9^eh#bu)LM;eU9SKT#o)HazG zXp+1;F=ogfK}fcUJfHR9PsxjRS3s5Q1Y)C_-E*O#sTnekKx}Pg4QD_o*aDyQoL?Ysy4gYh+y0_JO^m?0Ib61zL=Ro?4hii3nURQj`c~GcFM4Xf^T=s#x48-H$A<0cB z3oLp<(?;`xOJnsLdA$*$-_l7!%QiMKPxDM&@DOT2ONE<9>GyUx=@bT{2ga7feTK6Miac$p@=T$1 zjxL(0cpBC3k|Y1>QjIi>U(ExCaPzCL9e#577GQ4UiaKK&Sq>c-2)b<;vm!WO9 z&{Hr3h3u^iETNvF%SnW|FKZXuZ-@PaarznhDd-(c!5|3>H`1n?47;WC1knB~(@3w! zL#1ikm|k#eM90Lq)Lv)p`|ZWa9+A>zmn9Blf>3Xx+C|$(-ca{MQ?P8>#~UzC7m-#2 zfDX1vgd0r|R!FiC3;0eULyHS8BPi(fJFHRK;v(Q|?(KJb5K-G!6O(qn_m#N&r)Si> zig+_=pZih3;p(kY4mPql8)<(%c>1)E2=oJI#`rsT8Z%j*LN$a|kRFqb<M@Xd%=P<`8Dq8R zchEfrSKYmgipp^zhos!Ba>#VgxP$;rk_n~wc>iX-=lrfyp8QRaBIBV&M2%T+XHNSM zCqj!c(ZtNb&tJIFGW3s{)seTT3?zm34`ISE^hLJg@r31w-0HiKa18pZ99E9)B54T2w|6;`2Jc54jLoj40_JQ@Wh8)n*=mpua6dY3jo0KBgPAYV_Qm z0E30qkL^bqrr?PuODJ2>5EFEvH@|q7I8^7M`6n-WRgx^>y3aUSu>bc7)aInh&@?S4 zA(;A#)Q=9$qmgHq6viimkZj@ObDOz%j6LG9H)}tdERwKHr`95f9DcAaR}l!+)@^bs z6l(j{e+wc=C>X<Rb%V5-^gf#=a{%dT#b(|`n)&l?EF0Q&&(J=Whbc|5y zMh*BLlknLxGew||EqD}DsF%E=zola&D&=Jjt&Tl!Qd*!-a016M{31*D{^{p{vl7DL z28a@1HpW+*v$VA#uN5+IKdfrVu*7YZG0l|8aP$;d$F4tK=6oFxpXE+{>q`;z!PuWC7@tA)RNdrjh)+XL6{2>>9+f$ zyk`Qc*TLxT0be6PTGJ6g-iAMpY9{9kXyw^Tu~f5bo~9C0eP8lYj{NWW%u2-g!^pmk zS|jYv@&UwOcY%Yp@cHg97+wnWnU!Ju0+GAo6WGkLlZl>W>RS#&RTNtON@0VfMp7Mo zp$&vmBYVWb(YnZa(L=R+6fL%cI*}5Bx)RAS_jwVTnT4|yTJ)w}rL%ponF{;^H*GB4 zd(`!?eMj{Vvgyx=mE>n)JUjQ7!r%<_-nWD<8y%F6cnOvR5yC)9un$FOM6xe{2bF+n z+K22@1m`*4p_K=z33LIKD`)Al)x0`wQGcCkFKX3TeHl&ZvKY7^mNx(da>_tKbz#P47`dML+7i4qj`5B?9GWY zd;qRV9$31PtuT`aQpu)`q_XAs$1qls13mZrP;(t{1>hVuSlJ`WRQFirfQJZz#rM=m zS1|{w^>@?L+o*zm9Ur*Dp?>9OJ@mS-8IkEH2_~T6xFFPCLaei~yw}J$WZ2>Dq*qlL1UL2TKvC zq8TL$2$3^@6h9p>Ap`Fx=nxzOBdzn0^gdDzp*??l8g^XZ9#EgA{1LEq)o;t!(99&v zZt)i!>CttXf}TMSz_)=K&Ik(ZC{rTJUj-`FxP%1#$42ggV!A@TZ!(a^0`!ciI>1%T zFz_0_`W_0cOmZepI!amZ!dn9;I@9}1mmHQtfH0we84XsT)+n12$`3#nihq$iFuZ5M zcgMxYZx(ehcWI(GUG2LeWHCB7PV_Ti*iH-WFa7h?9W`@Q$;X;ac^yBdkB;}1DLI5J z=b|8kD35+`<5$WZbNUt)G$hg1X= zgQ1c-$jtr9n&BPv49>}Uv_d^(|COH!)X(Pe{Sl*zJ{zzXF}%Bc+BOJW1+QJfk&IWK znUK!jDc=FA5v1-6L7h_g6IVJ0(^kFRU-!QJ%)PQhETv7=DgxAI)w1@nSuftXuS1kxOA zMBZ&eP4%ko#?!1(7zc8Nvcu}+iw8%ecu@HJ`GuVtR57S$%AOBEFof4^y;S}Y!;3BR zH~;}u;=t3QJ3!@qi?kh%G(nB3KNX2IkLV)kxSh|OIp6b$(RT1BI^Lm|H1OE zThNhvWqW=9N*5O#SPfJ*sO`ydq1Hrc0hIE*{4*KNd$6jvA_Br2Fky)Ucp0~na*tw= zPdfDV260p<)9vRfo)4eeM}NLXvZ2vdah7V)rt{zdh~m;3Fe6a7%M_`+iR>StpX231&`?8 zlJ=T-R`8u?+>7kZiVTv#sM8y>ZVMwPWn3jMvi`eN^^dw1`W4)ycx<#z%ohz{V5g0(^0*Gz)_C z;9*=2hM)BUfO^M_A_hW2BvYk1rOqL2ous65n38?I>jAn>=_$#JxhzVuIR{|*#}7bW zQ6Zv=uc0W?4fP1qPa*XncYbU9>cc@dAYuTP=Pepq489DmG><>Q30B{SGDV!?{cfUW zj6GmS1ONO&<&!;?TV(j1kh%(c`njww&8BMwe??(H%i+0^_huXGYh?(Xu)8ho&?6wk z7vK`sz-Xw`n=@oGa)H~%uGvt%Owc;r0{tLsz>Z2t!q5N$-EhlETrIMG_4WE_*B>e| z;0A}^-3y1(UQdOmh_ik&DzL#`l1<@L>ZCjF463(qj;bc}Z_|qNx;A+6n5|n4P=up+ zff%v76Oav^j}J)z^6&x*#|_f+^Ch9Pf(P(SGeR`olGpq8`WzY~1?~s@f@UW@h7o16 z*fmuoLJ4KVG)%Ns%%QUHAOZs(%^#my7Ej^mDj^?1gGBJX$kEv9OM=S>AnC|gTk#lP zr-7_RI@Hjno9-~7Tn>_pbnj0FuN51FdvU8p_L&l?giqEc5$RKf3!r zZ%1@2iT|U#Vh4C{Sc3({r@yi_EWbha#=s}QT5D=?MfWK9Rj`5*IgXxp_O&|QWtndr z!lBvHf~pm%%31SlCHv1nRn{(sUJs|Kpd+0v;^j>d1*!!!bPi3xlQ>tS}IP)Vf%cFUnxIFs}A;3QYVO_uvJ8(2reMo_VP}&f;9xoWisuMvu2(UK{ zgv!(qpZ5Y3`H;o{IGpMaw?Bc=1CAZaH&02EJ)>EaK^uU$YISwK1C)}W@AywAby2bu z7t%2rv4_MXdW=Gm3teW1vwH|o<>&l0hQ2@BAWB~PSKTJE{{(s?iCw!0PzA(@(V>(M zB|s1>bPED}l>QfT*>CSsPm?_1NjgvYPB{n|4-Ayb?h91)oAUnrke7uRw_V$k5B>v& z`P#d5WM)8Q&@=iCd#62G#rV2fRUkKtW+2@gkEy1~WU?=U2e+^w4eAy-l2&XGaFOB! zZ45+G2JQKm)(i*WPhj{3kZ6%WQjh9EtyQi&`L@7yC*TDrW<-8{{_76D6rnthN!vunuu*v;mk7T0_|`8zI}GyuR5x zAda10;ABD$aUl;XR8h3_OkR4ufziAK6dpGHeh%EbiVz;M3WqZL(l^qcdj=w}OF)Kc zf!xBluxoPX6&pf$(DIzZg%6Ub?wQN7I5)$K<`@1$byv3{C4yId++BQ2VfTlMp&TS3 zXz~T0p!@Z?>n##5vZL0h_l(VuP7HfV;;ddNyeH0%u+?R8&IlTxxV!JmC03OA{Z~I8 zZ^<~IipKUIPq8-MwEp|qQxw7kfIa1@4$u}e1c|^^v6)b>s%$|ZTcVTeCaVytFdz?| zb1+!ipfvqQY>%HGH#q(VK*e4}QvtMh#f-QRkq$LbuVHE`0TEFE8_Rv>;?MuE0P6S! zF}ITYoQ#$y;Fu$%sK*>6$r8=n!pv=YU-tc2*Tb@knaQJ3UJyg)o$JWld%Q60pFFtO zB53wM&ti5->g-*XebD=b+VBqu_iG*=cHGv<`o$9rEB{=U1Ax=x+T+h>@9PvS-S6dv z_HaHl;{JJM>TIq#rIq_rXJw#YlFTVru&qS%M}X`=+C9;dpkjC(87w5d08Jc^(PkVZ z7$C>|9U;q1)XD2i9LyJ(x!L$7NdPo2U9K`c+QNXscUD$b0Q-GHQpWoNoCCVc!Pggd zi0L+5RM-DYe1jMzVb*gGK8VAZrjc?5HU;6@P|$56V5;ee;St1RcJ8zQOEm^LZiM13 zj{><|Ag2Y{?4mw&4=e#hZyESg>ryn!pHDCo4+Cgxe|swL1>@Wxu|~F#&4_w)5eaF< z(*0RX59pX7t;-GFSVv_N)0BEZ!gT>#b=A@!J91PJWq^q9g6YoG1yf~1hHrpzI$3h* zJrwr41*d5;X$Mesg6$l7rmbPAU@}dgkOqS1iWx?W1`-6HC77TT530DcAgm};$F)Iv zeH#L(p2BZMjW-?76}V>s$nx>y$2C7h!lv+curf1>XY+Z@v{7VIloZQbf)0SeG24q0D5hYUTRZLwK8y1KQVl}E>qbZ4q>d;qV4 zi`#r;zJ{BXGC!Meg3PHTRQnzM^X*x}t)Q1H^zbH$k(eI0bbF>+?*KjG^z0&0~8Q*VL@yV@X~MU_x7c)=$ngB zC>mF5;Ngh9tBSYIHQfrP$l%jNL6PmAB4{f^IS%${S0ekoPK5R`TAT3p<5)Aovtnz5 zp__r+9;CoMf}UcNZ~q*jel}`v#qnFpG6v8-4;ypfl&wsd>Mx&%65G+1>smqnT7cJD zc`io_raa*eP!>Vg&u9@CTI?xI;rgX~fs0)buL18-*1(lXBSI!s)Z?hnOqyb7r1fLu zj^fAFf=D(ytXz_I(M6u5jS?X>9~3Er1%rpGsNzyk zBsN1i2=Yn1c@+vj@c@#0naV9F7XM{-`&q{k$1_ zo8w%#SWQ}$tFATBMt{5=@tF-F3)m0)kmpl7Mx{-9Z5Zi3za^&!p<%As zp?E9X$03@BT53MkTR20)1!V~|J!<TYr8hei4q*+T5s$Z*k6eIfj@*etyBaf%;h&ta2k@%@SWaYq z&&zP9AyF&e7*}YS2_5*8cS(a4zYRmPBqRn8tVR>5SQkHkLI^{Zx9_KE=CaG9k05H` zNZ((R;8Ut5X2i?K=X?(|?^QaxY$+IQCa+_$%p79OC-_ujkS#^L9bcBnI)0RW@o-fu z6EFmBVryx0gY-J0L_&mL`e-z4wekuq|7(tmETX<#0}S38L8joQc|IFnE~{dliQ1+t z8DLYfq*>wF?;lcI3^HmNgUoP?Tg4|k2^aJZicfVT*t%fge@aBXUf$>K&7G_ZcgC9m z{ix=*gFeEx} z)PxrAaS5?}jqw!qvitjO57Kj$%`X^vJ!P6W%$J3Du}9Ig7#P!poOYno30R!6NMmN+ zZpc*>IN6GH4Z1x{f}w2s^wJg}TsRNd-WG?=^?Du%C`1TMqd&i859<{(1RJHNt9uQG z>WRLI+MywcZ)!tOWYFs&9aCJm&^kpAu})@&t}i?Oa0ufi8B@;nz_*wN!kjPGgf@bZ zqaz`@x)=`7VMXW+Ppy5{dxRzNjl)mwBqwZ>g*Dp28s3?D?{{vkgXS<4a2yL~TS@dJ zS#&j~+SJE{9%fBu=}Qi>es$Kw@QzS(jNd*LaawsfS7j(j{UTSBK_a`|n(xbrz|hJA zho`hc1;;<=_$2$;AGZJ)2Of&Z;W3Lq%h^CZt#x!-ao3(2WgA!TU#7tHj|5cpx0I~* zBrq^o5}WGl3;m|;(R6O83E;5NyaoMNj#v9T2wSdJpa&kW4hb%t_YfK3WlpOGA)4yf4SKf?X^dVGO{8D010^jVbekxo=5wN z`Zpb)>^za6o6v9P644U6Sb-U%4?2Sk$#x)t1?3+yrM05-!-}L|ZdU_W{`uVDpWOCY zs#$>8K*X}tm%S@tC5&QQAg5=oCYBP0bXp~}8esl)3AUPCiz%V$4=XW8mZS}c_~39W zQ%T1uEkof@N8sb*t9#A)Gc7Kp=v;pQR9nz65T{-oQRszZ%{7#GW+tw9m)g+MHxsl% zJm^9A&jOsSrjbk&OgKm2djtpSI|8Hjkl61lBgm4Rb!vv{pkyr{uyCF&p|X~^khbV> zvK0)r|MKvC>XS!)6?Gu4HUy6D6PMk0S4i@V5nZKo0Hh>B5L?8>#`57Cm&Hhnn@^`o zXhy18n2k>S5E7_vh!EAaRK6rEFe8NotjReDhHI+)!J)sp2U$xO!~-k(ixIXB9N5T{ zvmbiUGHhs3FbH}wz5RhATa%P1q_ExNk1Z)D7w4LpVesNy{Y~D!?q9-(xLN}J7T>;=DxrFY;OjrnEOYbpRrvDchFkB2^70=Zat5@VOEO%9u~)b0HW`4 zAPx6hoN~daeNp}9*9l(Cb3Bk<;*Lk!xcDRYEeM!~|MhFw| zUaTr1Tx0CNR3I}Uw!KF}hnq~KZKQb}k6f)0WO!wvV?2j!t&t6aTm3Ul_5?|GIfLNU zz+yIAUzV))%Nt||K|l&;U9*`B8;D>NUooNRg18Wvb%mQSv0cto3r#H}p2^Ssy(A+4 zhl=Dbw59}2E`lPr=tFbU6b1#)&r?L}-hCekb(4Wf*I{TjajC3t!!smv2&p31@(ftu z;U$9&=rRbqNLf>t3II+G2$Z?yF}Cq#TnDPvO!W`^!I^ZY_<}h1KtUjNal##=c3LXy zvKHG+uLcOfiMvPuY#U1xNUGhb*ii0m!ors2S10k$=B@7>+k3&5?Lx=f-)Qs@sv2nY ze|tX6B%=uU+qeF6m@^m2Ay8kF{cySc7#Nt1WVmVy@*JFebV;ZV5zC#8DfJm$>A zt6`Mjfx0pXhB7WNXEItQBk}nIg#JilhnU{dgcEd|BT?%GT=8jpu@)kKH}`a<704-+ z9JYa_&bR^bSr-&FFIAO4cDi|erzbkftjp*d={L2~f0UM+PqIfWj(g(6V?FrO<$}^a zBERj>3Vn2-S`y&*Q(*w<6R;_nMnEcOQ-0M0R7Ni)|0mP#-JeAqJAZ|sNpo=H;vy2f z`#si0XHwiCUw7&0Uj68OcMcgwjN?fVk_Y zJS!8S^MBdk{f-;EXhvf1xIjB8C-d^UN+%zFQy5jL!q}F#hcNo^zL}OJjB~*J#L(10 zrMZd3@4@16B#Pi15e=LUY*Phy_z>b6{_1fNrrjj!m5jscX|Q*Sc|~E&ET_3o$S)T{ zw;>v%aIO2})070upG6jFh}Z()Gmyk|!AGkB8rvVCr-0K-f;{ZPp-;0~F-nhcA23iG z9urF&A7(_DHi!GhjZ%$sOW!(^22(L}Z9KQ2@_7;{Fz$3!y2&`PD#%^hxiQ)aLW7#j zah!?mo6Db0oa=gWL>e9Fy0ok+&zft{1}&QVg%*?emnFt*)tM?2ILu)Uswkb%b92OW zVwXkt?u|w>4E20gcT3FO;=4_DuHohQ_Lz&x%HBccots$PH{?_yuMvTyVz=KdGfw^L zSv9mSO?^A{9G~UN%F~rfEoZ~r35qJX!bSFp=YIXgD~7B}R_J;eL=LYi0HfRu^k~BQ zoso4hY?zx=FM~1wK$TpJsitS5x8f^(3)*a=2IQYegZQ|L#l2n!z8tD!m#er7)Q!mj z8Plq`+^=7^19q}mVtKK8!vhmX+&c=a#yL=e>HGMDwysk|sPDHh8b5;yHM@$IB}HvC zmU0=bSzD0ad|~N0oqJmRlBq$*EAZaJFamMO(=W>e_fhLxaSD{_we;N9kEu5R->o6Ol{}a$8o`4JjYYnMM8PoIsrr z(_(|?N+dkHYT!)33j1v2CZBJNG(>!;}N&!Mfgg9~hQOOWBZ=e&0R13#XJ&<3cCmpdoi9tNPya&Of z`$HRuRXXIQ$+#Q}m!UpA4|sW?)5X;dwcd|K0|-!{YL~TZ(OHo2ls(Y`oue;Mq$->} zNLR8?lT&CPm}YE7H1!t$9O1i3`@%%)9g55j_&qXelRVVz@TYN=F%Q=TVcVcpDqoLsGqXuwt0Z;_PRjp!qh9WrqPx;T)MbJ9kX z3?GWxt3PF-6_okv5 zlCRBJnb(m+e#=rjN|6$hsMeFgOG#d6>D=5wu(41GJ`09=sCv)`jsy2W>Rw(;4C?Np zY*Pn|i^Ls$hC$d>VdYNwga=uRK_qCxoOtVtgXXNUmgR0Qi@)I{W~zuRP(2%w{FJqx zZkXyX5I!N63&W8c1-7|2slg0rns!foE?5kJ>B*6n`*MhtptQ0-_(o3rj-EU@E6v~h zFbQ?JaCSmR#PK$=oH$LYo5PjKXDbk-733_m+Wsff@!f9A)895m9_MAwp-0{TmXw2# zC6qq8w6m_$EmlPB8MFF|6iAt71!mv4BHg;`i6|GL4n7hfq3___CiC&yvhV zO}eozRMp02m^)=_cXGZ<3qnnJqysyAC(qcbdmz09YK;>xPw~0j%yygifd42O%u@H8 zGOy3QkGX02bN>A)jJzXFLB*VD;Vim6y3HiD`{L24QE4^>9lfqINoxs;b11YdTnEwH-)bP+SU#nwq1TVl&}s z( zpH=cbF{ZCs>6sKE7=RHh{)-hm$Jn1K;gIsVQD0d7$Y)wBnuBR`f|p7OP5KCwx;2u&QorDX{D+?|lfYknSqX=DPSmGXJ>Dyr61n5TIQ(?l> zerX0lG|*}!?0>zQY~4#t*i#kiCxFnT(5awj4pM%C&CNru4;Vz$$=?`Fw<_`EeoZZP zLvwmo+H1;Rmd-gU6GR#{E~5Ou#hj`b2}du`)e*9rx?$)Wb~8$D`jGd}QZ*s~?_U)B z_iEi;qOvbSaY0$(=ank5{KEYTm2PNGPx+K$!2?wijJt6+Z{DN;)@~2XoZa5= zen=RT>wP_9fY=-m$IQiamU`N{Fe?jWCsI<7t&i*0!*nK-R87n_+%Ve=p(nl_jNoWO zc}sDEYrFlNSjR7aM9w|~r3t~C*j!y`o1#58$SoL0xO3=-HVd2@I150@XRvzWLyNAX zd|@lqTx_Lgl{n2|rc~Nk8u57UjcQ{NI2Xnid#978hYlRoY68@+|Mv(17%^4mF)@7v z1M8@j{-`nl-1aLGGWk8Ce}Huj#-^rhZ|0afH$H1a8fv zcM-biA_BB&d%bGwk(K+n`PyPzX#zlcbVGM+lhgr%rf@Bh+L|S=9^2GYs?wS0!Ht5# zH{uhD_yH^iMQ&6g^bGF8r78Gg9va1tfSrRRn=Y1~k03_1Z_i-q1HAh=T`kd6((BAn zb)QTq%b-FrDKk9#umU{!Z@{;!fZA_^6d8d!IP`7b9Dye9RP{y(G5{EL7o|u|O9;{t z4Hh_V3ag{WOc7ODo>C*3?vw>pM;b3}ud8!T0Hi}z)SV)N7i~>drL!{ip^OVwejkTP zuP(R~7(2=X+J%J5*N+He36;vhOtG4OFhC*5siMVHPa8|?kcu?>6+7~QSQjRPFfARw zYy9IdclZ#1_^4Ao)ZMT+J#_{~qfs6JTgd6}B@FY+*{8##Ue^mtW|WGFs=J_q z29&0Ifg!kX*4uH1Ji}5SRZ99dk6WpX0mIVAuD?el6AC3rpF^@V29>%KUuY!C;-t%9 zKn!88ILi$LZ&q3Y=bTzZ?D@RTI# z_>g)zd7B>NsF#8~&3WeZ#GvE(*1J$TpY_)%1h3p(oIw4`hhT1R@7Q+%iPC!4kSu+d z+kw@ZNW@zS$RY@C!=JA*F9{T~%;Ys9NiEU}-%dbRboVw3|M(=U4bcx8cC`0mj}xW! zmY(^VjE{qH%!NsP1SHixX6GiV?s4m{mdn!2cNkMZn_(QKvuMK!DI{+`7&Ni9q}C>g z&mgpmq16731ns%gqvyicrk({qDQOmJb<~;tzUnK z!LTjh8bSlXFE~oGl70Z5LtyjKu!R}S@Uvgjs|Cg#@j=I7$P(7@m}X5d`#^Q7$M(i? zP%Efk&HymbYp|Xb#7GK>8axgC#GvY0ole3Yw%4XZv$xk9V09CjP$3%(?UQM;c9&lhBrRgbd+vkXh*bAprw2jHs^vrZ zm@VR81|M=Kigt}9-MAwy2q;@G!C;>uT2%?DqZ_U+y>iIN^;hr>=z+|Gao=$>p$_%o zz+rYe8Tmn-Qt)Q?hryRWQ04-uqf6nejVKp}DaZ+VC)-WO-_p)TW5<#(KFW0JW>nN5 z@Yv;^O+008w*3NGP%s7B#%RJ2P2}(Xzviy|9qKjgGlOhdQp%you}u<%EICoyMwUU8 zrD%~zC`+_4l}=He(-_&8YAkIkYqCv?PEFy2k}Rpn5mAlgU(_CMGgY2={qKdu(q$=uSZOfDSD9-686 zX|`&6*3VmBQHvTvx_N7Xyldm-0XO4OWZ@etX@GG5W&-6St22JU=88V{f zL(aK{GuQY9emQ&7$jq;Qh#06w%znL-Klx9BP1U9eg=&5|J5nv`L1X|);LmFf zG}iOEtJ-lm6F3|?Y#3E#J==fbf4KlC#-d&*NV13=BI1?=U4<|5+v$dy@gKeSg>aM{zn2QQF;*2`;aP*(i4fhrQkB6C)ZTLQYuIn(6&w|iiCqam^>?%P- zz)>foCw#1xUemjK>`^WW2#KH~Mpu+K-9MQ@Yyds?t69A`xwR+KMcbhIzGP+zlK7&e zPF}BeV5wfZe2ly1vcAVpiF1yJDzc`WO`omj&L(dQxLtLX_bQk=?G-D7RzhT@yZxZ` z0-Y$O2$6_~#Efzp(IX0fW>sL8sDYf0Lclwy6=Xpqv@QH?B_{tdPA`b`0fn*=1lJAZ zXeWrRArkxu49BOa+2wXpbC>RVB1d{L`}_RCe1GHwf7*UOTKLoESXNk8Q6uE;E_}Tj zYQ((&QYX|WYh?dgmy%SMR2!$LfYA~0a}jvXTw}AIbb@QxFVk0#z&9m&a+Wx`Bfj+b)4JGj#yAVAl{OsO<;ue^Px_v{(ZsOXlU zdJTAIgwT7My-ry8#4odLY;dHRY(k}0&}I5QxQ1(t#xOocciYOMM` z2+kt2^abrRV%%HAEhH;;@lWSC|J7wV^=M_OGGxU!t~?9(3o5>sQGw|hF%gE94{RNp zL$(w}V+Z(Hu@eJWE-GDYz{I#al4+uRdfB7%3H3_@UKLI^{lGNX*6VZLg^+;hgAzQ+2za{IMQ>YdA8*?1;1LhiP(9du*g66n>bOA?$h?aqGVwd5RsC2sSwC0D$$os@MoEc6OpWUO(kNSBP zf`dM?`2zRlfL-)yZz(+d*{I0yeEY?|(J5zmwB$26W+SwAzwckdlGP=ZS(p$=h$G!wlu}!J{C60+^ ze?%(MFNWx3_-&wluNsemhx-G>-H3h!`_|THR-x-^Rlb=5B4V^6|?3UT3&>^@D&X786IZBi?tYOgGNiSD_PC7fNBB=?9hY#-iU_ z7pP?SUC#@}Gqsrxwze=~ynBKTc)l=}J30_{ywaf_1aafNuQ)jKo?CNEu)!XG7@vpo zV_{&sIUlRM8cv8~=z~Nm-`1LRc&nLzkf|76f@BDh%^}(wuX*y`Vg`~wo{->#b3kj7{LoC|?xV}6bn(!9g9S-Kznb}fp`V|eq4UyWk)6rszCEs&h8!^>vzY&e z{xECHi#|hh{ux<6gD~gtDZ|+2c^hOlb2i9Bl+6M358CFwaH?a@SKw15RRr10nZ-k1 zlbh3`e0N}(oW2RJfluH&k^C@Kk+yjO3zscpfkpHJXylUX?%0gpqr^5q;TFnvq@Z*(|gofY%i#7jw%#?~UX&ylLgXF)#WAiGLy#1$BA zb~QM-NtzI&QEMPoJha?EWs8VLN)nk~h~UV(HOE-xdQ~qGFJWX^3A>jB&`BjkZkvl% z&f=Yer<&c0_Q=Q0)&Gcg9wvX==0jzRsPdvvv$4T5`PCT*%bmdTNOu$!G~{S{BZhF$ z`0ri*WRdHp7y0M~Zae4__p*Y1g><9!Md0rM24Y7C43_%PRBuGZpcn&;n^{%kpLD5D zHHf4=*~JrLGpApso7BOIXYl$7E!+&rue{=!+!NK4j^uC1@LhThAN@JebygeIf^NqU z#2--Ri$W($8IwicJ9thc2Z-CU3u;P8-_F}0#>1Tee*6cCK0)hCI~*2i?U?iJBP*L& z9*A!+bpMHtw35EvNKT^$Q?Q>~=ZFqa?+MkM&?9xiz(yO9c&n=}VV$8pi|mPcNz^4_ z5{4muro6%Y^x3lpk! zHy(LMK-EWHAjW-+GEdZY#xVn8cj)&88*R3JPL^`8ww!#xJD3(?xI*t9PtG+J?p)@GV^ z{(Y7F1)DR16&jwcjjYRz&Ngo;-}Ep=a@zssUG(EMkQ@g7;+=q&Wk3t(Q^(q)K9sf{ zkU|+;HqQzXdFaDLgF zN9^o$1VR_*Zy~uixAJg3JZ`n&Q|FPhQAcGhe4ZbRLwq7}d+(#7ipc-wC0yZByp6t; z@U4Tn3;$tf9UD~1n)yYDq25Gl%t>~Sgzrmzj;ap$j-~iOzVbL&hcSdd@HFZiu5T(% zZ3u{7&d7eoy58u#b+e#o=V8n3$R-IukCTkOKbiZvMr!w)$QPt9;rl1_`zPg16FTJg zh@70^VcwG#0uM)YI+18=*Ye=&Jnr+E^AKcibqSlH4IcucaVF|YT&aVz}700{!gfg8Y|)h%ue@g=zeVy9C6)hlIvwI;ovhGB zfx_n0bId2+Qg~W&QDH{Nba8|=Z5uPAP05Q{pT5OVeLN@)zlPx7U!(MnD>UJ$rfpUxiRwo z(#1utH=dyEb^XJ@7g{+1J+C_)$cmxgYY)gDu+~e z_spCvQ5=fCe=pD%>&?`^391Xu85z@gyPYEKelGQ1%2eo4wzI=lHY5woHLdcbu%k%+ z!65N9A|8^mvbi{D|9eG6d3AVPIq)fN|K!OALUaXGa`&G7KIeFj?I$cffwW=2x*>xnQzo`}AtUXu9hlvq z`|=4c_!=jbyMxWQ;;i)&bR3UEurCq8jRH(P=8()Szus&RIkXGX$4~Js);Et*EvQh2 z+0NgQ0@A|}U*qd;%827$9l3Wh!u1dU(PICXmjP_HMQq-QX-K=~xu`oYIty2q_N&Ko zitZPtjBTBvvebNLz?jOwVJHU>?aYi>=mYiTmJ16p0 z?LNN-W52_^pgo{9RKCawnc8z85noe4l1^}#f5)49^5jXj>sxI`NulKzQ>j*d zE0uqAbm2oZXr|MHwAWaLP<+N+XnJV;G)l(!_|oG*#SX{#_|SD-nMaa(Egg2F`VB?h zzh}QxWk!OrP-<&WR%03^WKH%+b}pd!9D2&w2)aWXSQN}07DNjfy$^hktj z>0IV$jZd-xyQwqzoCAUUh5$$979E{3d;t=}Dp zzY>jFBA@VU;uKFyyO%RLJY-HJ#^ACL6*wnP(H!bm?lJyh;}i+pbb4;iET(#;Qt&aG zI1*YTPJ`snN#gW$X-w>%N)1|y*qVgD#0_Zp^cR;xsTot&A`%$%UO~XdvUf0*6K%8Z zjO>kZc85cMoj}xp-!y}g8*;R}t=6v`Pr@xAmW4ciaY^@5dj7qeOiQ%TVs5|9q=%oZ<||>+;t0Lou{uXh2DRO4JR|< z1qi_R?D(d2CE1Ga*7X;LWBrd|K$O zWFWOgD$U>z{!kIqLrqEo;F$=_(vp++hwyS6NE#>L-jLq62NLf#jc^w4Mx>OCE@ucc zP|3G2`{kNWpH4S#+L!oVGEze_KPLqG-*vfvqq)X|rPMNK_sOZf9jS=9%Qh#P{6UL< zGxgDfcyjQQ5s-Uvic;2O8T~cGl`=!H*UMxDYhxZVDPyD=Tzj~Cwq*s7ZaBDpO?mRL zQt$g4vTYsAAKD)oS3;pQVR`W(91e&5%98p~4$QcG{(Pnhph&+y^byIAsGhOmYhGl& zXBjEh;g6+kq6MOvtpiVuc>VV8rAZ)6`e=cmY13yZ6ep3kJZetnUgD9{lc#Tl&&s*f zbC4zR=X`k{8VzP5BiDXD**FmOap-4;m_y`lXj zjc+3BqleGSjHsfZ`;a20pm}iNGfAktvm>-rQvD`F5Lc5tEw45>= zHDNQoWhnyZfY$e8D!%s|GnILpeGxVC-#wDIaUK|B77s4gFnv>QxfjP~LfLXxUy!`c z^SOus%J_CBPJpFyZuC;J76#8{%n^6+E1Qma0qcd>wVUT?Pt>*6-`s)J=3=j^w884B z$z6SeLc;*TR0W6FM}PXHbVHCs)O<@xfX$0vzrA z$Xv(Y99+mqs;71s3Jzb@^p_l_NjGT+*Z$ncb))I6U$@Sw*x!Z3$KceRzB@8YVN*$Q zpsNL5IU;nY0vVBAeLsJA`Bgm};eU}YKkdij^j}wF%-ti@G&x#t9cA@AAr9(0=kZC- zc&bT3g~Fzbie-~R8z&2+NuYLY;?Q~2oD?J;kyxz3NC^^S*^+phbwE*Y2zg5COn(vH z$T)Yc_Tg2CtfN*WZ@cF1f?Y^@N(6?XEEc{QjHH{y#kK&f>kTWe}h}I z10-*v9crxKvM$TOi_*V*6`9a9TMleIUFoKUjJ#$sNzRW;%Qi28N4^22-~{L=xg?22 z?E#**{|1Kb?ZdJ3kNU0dC{5 zqGPpx+A1wrP=^|`FRdiIE#vI0v@2EMZ+Zg2k=8?!~>b_^2e|@tU*01`ZZmd6c)@pkdB|_BH zKbHJ9r$`W|(9O5Lvl7i(!0hYLP46Gx4eAw?>C_PPf~n8Yx^|EDQ7v=d8=|MQrPzNC zg!Q%1Xu`5(<9P)gUgqz?fBgJMu=zH!g8RWK3O8fM_l7Y&qT6tY&dk!h`?;hQwcMw2 z8w;=M#U+xKam3pLpqrYKs3N*e6p(GLr7?eLoDK=@Dp)edxi@hX&ADS31wJ%^cF-v@ z3ojn~n(NEig<1M<-|(PC^9W?NCwN`W4jH+W-cS|VrWS1cQ%WQwh;PQ6P6+^74Ij2a zr~BkV^U8)>QF{DR3!J3tIiEytE#AvYW=uZ)Gjhq>Df{FoDEVDI+FQ>3*GniC; zV!eD%PA|5tStcBNcdMD56-^a+aCry>0epaQ@a0yOv$7^n4ZE&v_Sy-5tOB+F0qyq^ zfIc-<^b6fq+%nwP+@nP!!|@gi>;UR{=vg0cd6g>Mot)syZ#`L80C6cvIe^RN`u6i({uTC3`FcOfMcJKdc8EEu$_OGFL>%kH_1wZ-@l#0=HG!^5mr}&J$ zL0hKf)5Gyo|M+JA2hp*=21Cc~xNcV?x1(s^;Tx!XW&!LBKsZIL| zSS{vxS5yamP+?7;N|TO=69^hnnwyl8s3qJw_Euupj=M0bk9;nxKv`h?oWesS;3}Cj zd-5_9Q|89}`DaM2aWexAMbOOiTh!swDLoaP)wlP`w_Z;8lryhM{DQUYI$EOIesSi*yD}>3E!ni9$OV2ye~#+b*A0Bm zJ*XAr`LpYc*Xf$n>aIT3YMZUiekocH-vz(oTF@WU+Pl5%A3Lnn6A}{22&aUSAG_zW zJn0gRmKzGvyJFlV6E9wD@CUdu$FPSR-)5futf32nk-olfNQj|}OLlu;Pp!kPi5}UIsaFPejhxoc zIr)A4gM;98PcW>)3dpOF>vjsMA6riz*}(oS~=XmwmE#Q1dFwV#UUHXt=(7 z`SOO|(1yU$#@^6^9}V4x>HXimJRNQ|r=I^BVc{?~p<%}ga#}sCET4n{xR&DolHnfJ zXase0tS9_g-EMKs&CR*DJzrKudRIF8bH}aSk7Y(R+_r8_56>-a{p^|lCU^4NE8k3q z70+gzSS2GP^D(_|n~m?-37O&YZL0X)=j)?o@T1VfrXYD%PEc;Z*yQ^gHM+XGEpOh~ zxVX4^cs%nq*l?@)*&ZX_*TL;wSWw|*^fjwCeQm3KcbJym-K^bwc$+MS__cz+%n=cD zSrr%KWkx@1?DhR(`6peBUS(Gh&q>@BFh)N5#VoRh+$*CtEPK{L?dHUu8&if)WofI% z>}~c`rFO|~l)_-X8~M}n?JLvpps%!*X!4*hnfyFiPwTlDWujyf|7&*({;$rj{0-rL w2%~lPkMzX1ZCGY=Aixd(<^R(^8JnVnGfp3_Xv{m$CG(=MwO^CJ+WYwb0681Ve*gdg literal 0 HcmV?d00001 diff --git a/logo.xcf b/logo.xcf new file mode 100644 index 0000000000000000000000000000000000000000..9d76230b76b01a5561d5d66edddc94456969fdd4 GIT binary patch literal 391920 zcmeF42YeJ&_prC6_d0~f;8z(0i_eE(y@UEB8mk86?;JxQ7j;eh=72A zbg7}F?QS3tdP0&dGvB%AoY^D@zWAzd^!qRV_CC)&bEoXw+1<<>@64F&36rB{jTjv@ zBPBIerBXQ^QmI@X1`+>Wg_jS!)M_aF;N{#NLgEGg{Nbg8mjk>4*hRZKDwXD4p#KEU5H7TV*)ToIgCXLLV zIHpyDetkP8Hfxa8+O?%JV{6x_sFu@)jft8#Y{IBkb?=##JvyngSaedm>}gYbj+)YE z*o4XBN7ZfJEDHW>nG8+uJPXd)ZPdgu)5g|qotB=OayRVB1FL4J+q!W|N^uy~-C4w} zv!+fSHUj!PDpgq*1ZUqa$g#xfus@@+Cyp39YO0uj(&*7sM@_SBpqTr&A&S(TRqTgq z|FjWU(d;Uz7G!mFhR?%TsE9*bd+1FO)`$ZBIl@bP0%Uka3(uMhC45TYCE{Wh7j}TE zZZ!|9=C0K|s+zl1bN6cQQO&);VSVZuvMfIe?!?o?^6Rq$R58M#jo8+D)x7$rI7GzZ zCEg!=iq+o%=@6PWYSy&G@xx}1ngSvG1iuwGVc3*$(c1Ve5pj$oiaUf%5<^7;lrkmN*tLzWz-1qfsPtKZ3+Z${j|U#*eo+Wqj84q zShOAb;y{0R`qXLJqi08rA2oWKSmdNxi4!J`92GShwnKdUL|~@)dWlL+%}hyZLLV-Q zj~$ggX6&@6)U;-qH7DR_!S+tZX2V;7j}pEQ(MQ$(Ib5o$*bZmW&+yMN6QS9)lKCa` z2j*_(QD#083)`}wRc72Qjmmvzd#SE10X98<~5UIm}{aB{9~88O)4lW->c72Qjmmvzd#S zE10X98<~5UIm}{aC9#1EGng6A%w%?E4q|3AXEPTuS1?yIH!}AybC|`fgsdk_CI8Zz53`!mNg=P_Sru4V3E zo+7q-hso1h{mAtL%v|PWrbKM*$&6qoF6oN z!toE7Uo(GV{z~jZ=QOG=tGK>_`7`r4vxs?<*j4-u2>-eUFk_ibnH`z^nWLFAh`pLK zyD+a3d-Hzj-Hq$wZ#($c`xEAIVxO7Jg~UN!nGZ0>F&|?-&wP`)hPjEkmwB3bk!dF0 z@5T&eCJ-Owe<&okd-u3>Is?j_FN%;eAM+$B_>`#$q4<~AmO{^u4@{TU;(jJS9s za}P6zSeNpm=c$W>@9| z%yG=eh*#z?Um}+A_LTAVl=1eI@%EJQ_LTAVl=1eI@%EG*;pOO=H;6a2Oh0BlW@Dmd z7xM&Ct$mhBpBuH7J~wLZcO0kVP_3ooQ0;Pt;w~jbFFJ2hdu`=9eQwlV`CO;(b+tEE zRcdb%wRaRv_fBE9VfJJ`#GK5W%Y2y_NbgG>NbgG>{tLy!>GxS3eu3*IVuUL*gcw7= zGwPTms>fd^Hq)2|X8y$dm6$q$IhB}kkeSD%-xqZT z{l2K1(dR+kj6M(Q*1R8D^L}VwPV;qeV$$!6x&!^bs5@kEyc2T(a}0APb0PCJ=Eux$ znY)-Lh+XS4(}=xZWv*gwVE)WJ&MYDh;QkuG{WXNX$J9d((DWg>%*#xPIMkEL{W+BT zb7*Uh-^U!voXC8V`6BTlK5j=NuF;GA18D8I9c#1O<(Xm z^A{$+?*+X77x4anUZUxXJ&8;BeJ$blwd6X*U(qmqnS30)lE(FR%-+o5%qh%y%vYEn z5Ld)AGnt)<@6z8V>UYm_ov!hy-?dWxJr8C$aaA-kmAHofK2d)ruHM5Hz0cr!ACk^r z)Sors`aR5k%u&qg%mvKl%#WDgFn1Ey@#knAe~#Ai=ji)KX!`e0F_$pkXMV-pM%>EF z+j@-ZKhxhk>YrD0eIs)ZGlyBstR(JoVFokfnVHPa%t6d-;sM@&2ikI-kNcy%-;eQr zKgRq0SR%DM){5Dkc)AyJ7_p!}vkCJaWsN_^2$d$#o9j``6lNP{Pv%3+$;8O!%r4CPiLu;1_93ow``Ec$f0_9n z^Gjl*^~@c_G~N$sydTndKcw+~NaOvG#`_`dJkM7_Z0yVoV#YC>5i^U3Eq`Se5?k*h zcDR>0kU5q)i}@_`b>=6;E_6Pk=|bltnx1nh-jm;V&-b{_@4M$#t{-CNGp`cqG!KYh+M4@{!?19O-!5l1XwE@ytk{D!%cd5mdfmJze*`$qGy3)Ls>XP#wV zV$%1AX0iv>C)4+bW^y9e>H9-7xjWZ~5T_LoXME1w%-m0Wq7QKn{e7aDbB^of#JNsP zI*>JU8*n{?*@^fJ{avqlhW@VCET-R6&EjO5zBr57gZUtn_v>QbuZwxVE`FD%e?eSA zf46B~k*U6%zK1n$@$%kzjpFZo%>0(Qi+O^1j#*B8*NGWO{3w)}K>YLylh?b(i|T74 znaRv7CU4K02f03pIfuA5n7Hl;@!R*9e4Ku}mFs+*ew)wrtHkdRD$RG^T#sU=FxwC} zZDaCrwxt8rxAbL>WKLtwXD(x|WUgoKU>;=}n5D$6I;KA}hMCUn!0gK$$(+WV&s@e_ z$z0Fe!92<|FiVNsbWDF{3^SeCf!UWik~xhzpSg^=lDVF_gL#x`V3rbp(lPy+G0b#k z2WDU9Nai%=eC9IdO6Gdz4(3s&fmur2u4DQ$W0>j84$QvHk<4k#`OIa^mCW_b9n7Ol z1GAL4L&x-I#xT>F9hiNYBbn2f^O?(-E1Bz=JD5kA24*R7r;h2*jA5oTJ23k)M>3}| z=QEcvS2EW#cQB7K4a`#F&pM_*GlrSY?7-~H9Lb!-SeCuz->{c5T&*q+YMrWSo;ml| zb`6}hstkigU+`m`R+VXx3Oi|4%?t$$^kJrl2H#uX z1vVvpwds@hpKRj;OU6U7HorCg=1-}&O75NrA3u9pJ9|JJU-0EM0KT=L69y#O%Uak2 z@LQk@xM%Us)3JF%gSx+UrZlz!wa0q}rdSEJ=lg}`SlO=j{qRpa2;fVE{&0b>kgU9{ ziY#f47yRk+FN?y@d_Mlb7ud_%*aL99h`*Ff_?ME!Ue?AQNY69n9{spq0Q}{dUSTRP z`ToIREvRI&UjK0zs%(<3Z?S8-eLwsY4+8NWQmZff>C*q#r*h)hvY#i_?jEq80ol)h z{%L1Gf8>~i?-1MB5_paCq}r&%d5`^!rxy2s_)UTH9{U+jE$#vPpY!%}I@Q1UAQ0an zwfeH3_t?*S?AfEgbr1ZJzcKA??dM4Uv~wi*eX4ohUidGZPO$01yq`|-F=Ej%(oD^4u$9_{Dh16qFUrFQ-f9$KMCUx5GB!b5d? zg-n(qt1zoc7H>}*Im?>W3Ths6TkxE{FJ3`Ua*=_^t#zRBLjnKXUy=5mr^Io$8HP z_j`Wp!DByZt=&B!KAiTG*4o_z|Kjr%`=;B^w`=!=Rh%%}Pg?CKt$*t&TkR&w{t0Wh zpNQH|ME_|gqJQL=y!E_;&Q6`(RCclN1fz8HkM0C<-XyMKxVqW#Z`}pAzffe4{@!IY z``-EI>>cqP^jE%uRpMfyy{xT0Ao>#44OeCDWo_+&ySavKZ}a=t`0e}W-@AX{JE%r- zuXeK&_O*-Ogxbwc*w=1Pa@dm`_W!ByPn>Jm^E0>PXEer!c&`kFTBEp=jokfCq;{6> z1|!c%x7yI?X)#*75suvLZb|c5yX*CMsfyOnmC9@( zef}N|ty*q%?Q2_GXy1>NZMYjX@Y@XSw~Ez4s0D9*;t=*9wSQIH{vX?BBfa%3#h%3Z zqxlQ_9;?2`#95X-oAdA91@_FuKPNL`?~6a)7vekUuYA>37Q?b56YTkv+T8>8Y>qvfW6$RNiF1v=J)3j; z#Ke7=p1{(2AEz7c<8%X4iA(o!MuQU~-H8$13oeGwe|37Ifq1L@obT|*CC&C1INfJ zjT*XEiB{JKtD+BnVQWyO(GPubp4R3V{m_>-9ac@hQlfQ-Rq61ri+Q%X)pSHvv`XuZ zT&J|HuA|o5qNCPd;DyCh)6w79qSbWFh6`3qc{tV|`|ZWsXtok{ihcMyZr~ID-)f5|Ox;%H z)3#kv+9yo^$>xn_Y_H}!s(dEgD}a~ZXx7eZ{_`~@o;dsGYZA9fd~}!aTTfZ+iHhop z3j5ypqkBXAKG{<{|L$F2Pbd8Gbb@`K{S)@t;w*7TBJmycSH390U@vQH4~V{`1cSY- ztvz5*5B&M`fPEkSd-oxH2ia3Q_SBC3e&f~lfIYQiPwm)KJAdL_<8M#xR8J?6*GMKn zBH<1RmfDKnnvCgzStuyIRFb+ULfaeR)F0tFSil-Q4pLB_@Z{*^uUT5>va~NC(R5Jc zo_vmU%rC^bG@VGynob3UFi6J}o_BrkZ_KLctWSh#lBRQ#SeK@Y!AP^SNZKwqLEA-- zE3ks#3>4?dwpLw@IJ>0ns)5lwuv~3dG5c*GPJnKk^cjR{pnp**y7B%*8K51EaDE8k zJtk51R9V##vxynM5brf1HQlYm`y^ryW-p>vVQ;SA%03*w6Z_(HN!vFGHscoPDEPbR zhx6&GfY7+JY(^R za-~hi3ny*f?8Tfaf9X^OwlS$)GhaSk*#J@^Cbe7Uk~4}nf90%Am!36ogBHtjZMr;9 z(Uz|kn7KjA*9uwPTdk2;NJR8LzNm8&3da!-!9^)N87iHtTdZPyLVVMp6%Z~ zM^TMehxZiqzUO^KeL8+%(|bQW&ux7>E2{PDvXY}(zpfuC>ffzOyRRyy*|c@;`&iL{ z9-px40(-8$Kn-+3y+2hnxX&6^hmd}sDH_`Ub49}juDwXJIfM`Tg4HqnfiFua>KHNj zD@7xReywQKgX%i2$~?fngKwtdR}s3EYnYVAdT z`~tJX40=h3_(l3>rg<*XE#iv*zr%TYM@ARC|C|2L15*}s#r&@HNLAbF`aE897fU#D z2W_o9Cg8~Pcdx%bXKM@U%?}!=p{=T-x79^e(dydLOIg^W+v>AQ^ycCJs0*vwE^NWe zy?OY*(?icR7fWa;S4ubkurH`KZ#6%-Ak((YgYz>zdHH1rpKfOJ1J!+AMpeAJKh@M0 z-#@pyH}O!Gxo=KQSJQhb+xKL;`|W)16OC>0y^mMYK)iW@J# zbkA&b@%8jqzG^G;VP7xp0nwMWmHDu*m-c`?d-3nhUfBEY&-WdC2iY?~_6$(9{73B$ ztobLb-JSumXMpS(pg(c0@i%9HZktW`{h(Fb6_XYUZbmL@-mc=&xPDznlx8km5z?DhbKZ!Azr_minIOQSgzqR%})vE2F$3<&9@Dg?R@)G@?Nya}(U{_R2 zJ=kj^hjTYOq(5bCYGN7%FCm;O5do$o*#pv34b4bROAAtaua($UB6hol-LWodyC=i! z3UpLsIQGJ6fv+WtM2J(};opeM?B4Wj#|<`*8TGBr>yQ5KGPiM#9lO!y4YI$l@^PE4 zC~e}#|Dd=_{DjRmZ#d~kn+Uc#ctUmX?lUqp*d^*3IuV|O|3l#18VWEi{ z_;&lqplJ71Mn&)Yq{z$-dVG40)vwoQ#TJVC^U!xb5V86%9dJeg+{&+N3M_&mmZEcC;3SZDb=>#~5LigTGz?hu`IEI6$QuI`>(A|` zAvqJT7GgD?3Ur5Aq!S(lXT)*G|2@RUoPhNzgu_APkp6;9M%7XZDJ_yqICb|Bi9T66 zbvxux5HpLiw1;ZDYC;?wvh?%quu~idvc&j_YNBUTWUKXgqUCAkT+zR>)igtNt86VF z0KEw;O@hu$k)<2K&~37G%?okWl_0uQmaf(wM9MncLsk zKCyw#f0|Iu$H&^@+s4&*Qrd5OIL78%v+Gs)*ec&Lwyq<#H%ZsGjEQ#igiH_UkE5e( zIx5P6qnk%Y+H^#OqCX6;(qZ9Bbkjp&I-2d;rUye6{eEbOO@{<)xxvQ4Rr)}X68-M} zY8t5Fw%-j3V7>Znm2MbVhoe`%8BnGD6}`N^zdtpwUS8Kv(Mw;#={Y6D*Ujk z;*|yOcd>c?d!2o_O=aFY_u4%7ZFKQH^;flHU8#g5?sNKIVn;Y)}(yQNLW*dQcAuE zGpa>3nBIW+oy3w-pvPp0lv03;NG;UBpcq)zoyC$`KzR@;mFM}-NGrspr|EA8oMuTY zl2;a zny6_{bm@nbLguBwWGUW&NUA_2n-D4HJ0sPK(|#8cHK~C#s#SxRxCdG6gze&*JbK*Z z9g4d&oU*f&<=oz<%?n4#O&XteFC8n7hs`%>eA~ZrT+w@$ zov5IwU#I0cigtee6sv!iH%_zG>GswcMelp(Y$eX74e0S+E^A<~5Aqc4v$DWM4TAcv zDr61rzgn;8z%>TekU^gt&D1vJfiKRnh7S4aJZsp4aBDki5H@VX1=jEp8%q=&wdoS6 zE@I4&m#x@V7nu!NIntGAI;`x)T-mPB9VfD#+`IL#;`nG%JG^y6F!?H81{vBUC%UY-N3Pl6DzM0F>!0zwl zk?Mkbyqgbt>zNd!Iyku@at%o$4Y`t3q&5ojouUb8(1m2D8*PmOi~65&f)+JT}rS`9TV2@*ku?J!ZyB#3Jg z0t>wb4%F%=U?S`XYvHyUCYB%~f}#y9fSbZvH&Iit*L65M*eo#7cqXxM1`xJKj{*}4 z#ROQBk(wkL%thyn6f+yo8OCeHRI{-tuct=LXf@{4_kaaTM|=^7eLOIF$Q!E%JrVoe z2reElGrafx&U6>3|0XSRh4LsRgbRNqifLhg80VZ|$IDV4;q-rrQ#9XQActCtLpfQt zN}n>HAzJUm1>!h?q!tsBT39#Zp&(mt4ul>}mZj?rp|fPEqzKa#@w1 zSlZT$mvi&@k~W@-AA31V@v@^Ywzm0^7h2i;*TpSue)zc-9z1W^p+z_Rh2U^HAFnbXAPyTynadhgeFJ<-@r@t+?{Q~cV_ z*{Oy$<=>{qr-hSV9wulzW%p|j$fC&b%)(>O?% zVH@k^@3SFA#=db3q{zrGeK#6XWb7M8LMn{B5d%&J6`S<2Z?0xs= z`|j4Wr0P$}vHSmi4~XA{f5HHs|I6E8&o|lgP4;}#pE%d}oAXV-%|P5fqE9i134ajQ z1U)5T5(+7aQey#fqf}VvZ%a!fC0&w;;s$qvOHVZb+#W-O{+eoVg<(Jq@{B1UW_6>& zB4aXIl0mU#!#R#6SBn{KF*2(aM5Ac(_|Oe9SzEeiIv1;bDGF6=t6pbP+-Q3|GLn=9~H8O z4ft5k8a`;Xfi>cRHAV}yjU2kRh}0o!*q7&6qereg&sul%hGJ63nC$N^u+|^9=^|_F z#LXqF4IY7q?cj19RV)UUae|0p76LIeqb|N;H=yFPi4X^_3mtEVg2J=?7~TZwK`dvW7itIk2C-gRwt@s0!~o0CO9dgG zEI};!)g{Rw6+oRK)+!a^bQt0ETM@D1-niGF z)Rg<$J${NVZ|BQ;c4-?Q4bEmdv!s<5>**I;c(R^a+{}YD=Q&8OQQMOXA%})qd167T ztD;XQIis2@k3ZGO$p`k6x#H-YhK^*vJ`oSr0LE~YA9^&7wQT>a1`ZT0-8&}45iUy$ zDH-9tkHzjX>#6gVe!jT7RDm^)ohlJGu0tP7Bn_EtE`%qNXhZBbf{X~el!}> zP!5tv?nlG~tNTf#Xm4>prNmE*xa59@aF&q!JIE8$Ebh5_cu!)^JPqtXvFJR#ShVDx zPcs+XExf7axWaUU6J!@Y(j&EBAtl%Enm}0c-6CKO+=Wp~$iYHb8w5g+LO`4%iNr*T z1rrk5PFAG*DhcUlB-Xh?47gf@Qoz;5kk^m`uH6ndFc?^V*QlVDl?2m&hhQ_#R}Ub1 zx4i}F{Hzt}@vDUNEJ8}27t^7c-{81=`V+sDvU_AawNG)+<_iv#aonq=xG5cNk9U^15goe5yWPu>IwJRh(MyW^ zc6$Ak;(lG;JX3*fOd9|0@8(t}!rL-w>h%0DpEaP*$A$2uED;UtzsATKG;r-XGev_Q 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≪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 Ag8%>k literal 0 HcmV?d00001 diff --git a/map.txt b/map.txt new file mode 100644 index 0000000..0b2b1b7 --- /dev/null +++ b/map.txt @@ -0,0 +1,335 @@ + +Allocating common symbols +Common symbol size file + +s_iY 0x4 obj/vga_terminal.o +s_iX 0x4 obj/vga_terminal.o + +Memory Configuration + +Name Origin Length Attributes +*default* 0x0000000000000000 0xffffffffffffffff + +Linker script and memory map + + 0x00000000c0100000 . = 0xc0100000 + 0x00000000c0100000 _kernel_start = . + +.text 0x00000000c0100000 0x32a6 load address 0x0000000000100000 + *(.multiboot) + .multiboot 0x00000000c0100000 0xc obj/multiboot.o + *(.text) + *fill* 0x00000000c010000c 0x4 + .text 0x00000000c0100010 0x92 obj/multiboot.o + 0x00000000c0100010 _start + .text 0x00000000c01000a2 0x48f obj/kmain.o + 0x00000000c01000a2 command_interpreter + 0x00000000c0100381 kernel_main + .text 0x00000000c0100531 0x355 obj/vga_terminal.o + 0x00000000c0100531 vga_terminal_init + 0x00000000c0100553 update_cursor + 0x00000000c01005d2 cls + 0x00000000c0100619 printchar + 0x00000000c0100783 shiftscreen + 0x00000000c010081c chg_color + 0x00000000c0100834 print + 0x00000000c0100864 move_to_next_char + 0x00000000c010086a move_to_next_line + 0x00000000c0100870 locate + .text 0x00000000c0100886 0xc15 obj/stdlib.o + 0x00000000c0100886 iprint + 0x00000000c0100974 uprint + 0x00000000c0100a22 xprint + 0x00000000c0100ac4 iprints + 0x00000000c0100bb4 uprints + 0x00000000c0100c64 xprints + 0x00000000c0100d08 kprint + 0x00000000c0100d38 ksprintf + 0x00000000c0100f25 kprintf + 0x00000000c010104b kgetch + 0x00000000c0101070 kgetc + 0x00000000c0101095 kgets + 0x00000000c0101264 katoi + 0x00000000c010128c katou + 0x00000000c010131f ksscanf + *fill* 0x00000000c010149b 0x5 + .text 0x00000000c01014a0 0x87 obj/x86stdlib.o + 0x00000000c01014a0 kmemcpy + 0x00000000c01014c9 kmemcmp + 0x00000000c0101505 kmemzero + .text 0x00000000c0101527 0x1d7 obj/gdt.o + 0x00000000c0101527 gdt_create + 0x00000000c0101689 gdt_install + *fill* 0x00000000c01016fe 0x2 + .text 0x00000000c0101700 0x34 obj/x86gdt.o + 0x00000000c0101700 _gdt_install + .text 0x00000000c0101734 0x173 obj/pic.o + 0x00000000c0101734 pic_init + 0x00000000c01017f2 pic_set_mask + 0x00000000c0101877 pic_send_eoi + .text 0x00000000c01018a7 0x1ed obj/idt.o + 0x00000000c01018a7 idt_create + 0x00000000c010194f idt_setup + 0x00000000c01019bf idt_irq_by_addr + 0x00000000c01019fa idt_handler_entry + 0x00000000c0101a40 idt_install + 0x00000000c0101a8d idt_enable_interrupts + *fill* 0x00000000c0101a94 0xc + .text 0x00000000c0101aa0 0x1f obj/x86idt.o + 0x00000000c0101aa0 _idt_install + *fill* 0x00000000c0101abf 0x1 + .text 0x00000000c0101ac0 0x2a0 obj/x86int.o + 0x00000000c0101ac0 _int0_handler + 0x00000000c0101ad5 _int1_handler + 0x00000000c0101aea _int2_handler + 0x00000000c0101aff _int3_handler + 0x00000000c0101b14 _int4_handler + 0x00000000c0101b29 _int5_handler + 0x00000000c0101b3e _int6_handler + 0x00000000c0101b53 _int7_handler + 0x00000000c0101b68 _int8_handler + 0x00000000c0101b7d _int9_handler + 0x00000000c0101b92 _int10_handler + 0x00000000c0101ba7 _int11_handler + 0x00000000c0101bbc _int12_handler + 0x00000000c0101bd1 _int13_handler + 0x00000000c0101be6 _int14_handler + 0x00000000c0101bfb _int15_handler + 0x00000000c0101c10 _int16_handler + 0x00000000c0101c25 _int17_handler + 0x00000000c0101c3a _int18_handler + 0x00000000c0101c4f _int19_handler + 0x00000000c0101c64 _int20_handler + 0x00000000c0101c79 _int21_handler + 0x00000000c0101c8e _int22_handler + 0x00000000c0101ca3 _int23_handler + 0x00000000c0101cb8 _int24_handler + 0x00000000c0101ccd _int25_handler + 0x00000000c0101ce2 _int26_handler + 0x00000000c0101cf7 _int27_handler + 0x00000000c0101d0c _int28_handler + 0x00000000c0101d21 _int29_handler + 0x00000000c0101d36 _int30_handler + 0x00000000c0101d4b _int31_handler + .text 0x00000000c0101d60 0x133 obj/string.o + 0x00000000c0101d60 kstrlen + 0x00000000c0101d88 kstrcpy + 0x00000000c0101dad kstrncpy + 0x00000000c0101df4 kstrchr + 0x00000000c0101e27 kstrrchr + 0x00000000c0101e6e kstrncmp + .text 0x00000000c0101e93 0x26e obj/paging.o + 0x00000000c0101e93 page_map + 0x00000000c0101f94 page_unmap + 0x00000000c01020a4 page_v2p + *fill* 0x00000000c0102101 0xf + .text 0x00000000c0102110 0x81 obj/x86utils.o + 0x00000000c0102110 x86_get_regs + 0x00000000c0102181 x86_reload_cr3 + 0x00000000c0102188 _load_legacy_stack + .text 0x00000000c0102191 0x168 obj/x86_utils.o + 0x00000000c0102191 x86_print_regs + .text 0x00000000c01022f9 0x2b4 obj/keyboard.o + 0x00000000c010239a keyboard_interrupt + 0x00000000c010243a keyboard_scan_code + 0x00000000c0102446 keyboard_ascii + 0x00000000c0102542 keyboard_reset_irq1_vars + 0x00000000c010254f keyboard_enable + 0x00000000c0102567 keyboard_disable + 0x00000000c010257f keyboard_install + .text 0x00000000c01025ad 0x2d7 obj/exceptions.o + 0x00000000c01025bb _enter_rescue_mode + 0x00000000c01025de enter_rescue_mode + 0x00000000c0102666 exception0 + 0x00000000c0102684 exception3 + 0x00000000c01026a2 exception6 + 0x00000000c01026c0 exception7 + 0x00000000c01026de exception8 + 0x00000000c01026fc exception10 + 0x00000000c010271a exception11 + 0x00000000c0102738 exception12 + 0x00000000c0102756 exception13 + 0x00000000c0102774 exception14 + 0x00000000c010279f install_exceptions + .text 0x00000000c0102884 0xdd obj/memory.o + 0x00000000c0102884 mbt_mmap_init + 0x00000000c010294d ram_get_map + 0x00000000c0102957 ram_get_size + .text 0x00000000c0102961 0x3e9 obj/pci.o + 0x00000000c0102961 pci_read_config_word + 0x00000000c01029c5 pci_read_config_word_dev + 0x00000000c0102a0d pci_get_class + 0x00000000c0102a29 pci_get_subclass + 0x00000000c0102ab1 pci_dump + 0x00000000c0102cc5 pci_detect_hardware + 0x00000000c0102cfc pci_find_device + *fill* 0x00000000c0102d4a 0x6 + .text 0x00000000c0102d50 0x7d obj/x86io.o + 0x00000000c0102d50 inb + 0x00000000c0102d56 outb + 0x00000000c0102d60 inw + 0x00000000c0102d67 outw + 0x00000000c0102d72 inl + 0x00000000c0102d78 outl + 0x00000000c0102d82 _insw + 0x00000000c0102d99 _outsw + 0x00000000c0102db0 _insw256 + 0x00000000c0102dc1 _outsw256 + .text 0x00000000c0102dcd 0xc2 obj/pit.o + 0x00000000c0102dcd timer_interrupt + 0x00000000c0102df9 sleep + 0x00000000c0102e34 pit_init + .text 0x00000000c0102e8f 0x417 obj/ahci.o + 0x00000000c0102e8f sata_identify + 0x00000000c01030e7 ahci_init + +.iplt 0x00000000c01032b0 0x0 load address 0x00000000001032b0 + .iplt 0x00000000c01032b0 0x0 obj/multiboot.o + +.rodata 0x00000000c0104000 0xc04 load address 0x0000000000104000 + *(.rodata) + .rodata 0x00000000c0104000 0x186 obj/kmain.o + *fill* 0x00000000c0104186 0x2 + .rodata 0x00000000c0104188 0x68 obj/stdlib.o + .rodata 0x00000000c01041f0 0x18 obj/idt.o + .rodata 0x00000000c0104208 0x107 obj/x86_utils.o + .rodata 0x00000000c010430f 0xd obj/keyboard.o + .rodata 0x00000000c010431c 0x16a obj/exceptions.o + *fill* 0x00000000c0104486 0x2 + .rodata 0x00000000c0104488 0x67c obj/pci.o + .rodata 0x00000000c0104b04 0x100 obj/ahci.o + +.eh_frame 0x00000000c0104c04 0xbe8 load address 0x0000000000104c04 + .eh_frame 0x00000000c0104c04 0x50 obj/kmain.o + .eh_frame 0x00000000c0104c54 0x148 obj/vga_terminal.o + 0x160 (size before relaxing) + .eh_frame 0x00000000c0104d9c 0x244 obj/stdlib.o + 0x25c (size before relaxing) + .eh_frame 0x00000000c0104fe0 0x50 obj/gdt.o + 0x68 (size before relaxing) + .eh_frame 0x00000000c0105030 0x60 obj/pic.o + 0x78 (size before relaxing) + .eh_frame 0x00000000c0105090 0xf0 obj/idt.o + 0x108 (size before relaxing) + .eh_frame 0x00000000c0105180 0xc0 obj/string.o + 0xd8 (size before relaxing) + .eh_frame 0x00000000c0105240 0x60 obj/paging.o + 0x78 (size before relaxing) + .eh_frame 0x00000000c01052a0 0x30 obj/x86_utils.o + 0x48 (size before relaxing) + .eh_frame 0x00000000c01052d0 0x120 obj/keyboard.o + 0x138 (size before relaxing) + .eh_frame 0x00000000c01053f0 0x1b8 obj/exceptions.o + 0x1d0 (size before relaxing) + .eh_frame 0x00000000c01055a8 0x60 obj/memory.o + 0x78 (size before relaxing) + .eh_frame 0x00000000c0105608 0x144 obj/pci.o + 0x15c (size before relaxing) + .eh_frame 0x00000000c010574c 0x60 obj/pit.o + 0x78 (size before relaxing) + .eh_frame 0x00000000c01057ac 0x40 obj/ahci.o + 0x58 (size before relaxing) + +.rel.dyn 0x00000000c01057ec 0x0 load address 0x00000000001057ec + .rel.iplt 0x00000000c01057ec 0x0 obj/multiboot.o + .rel.text 0x00000000c01057ec 0x0 obj/multiboot.o + +.data 0x00000000c0106000 0x270 load address 0x0000000000106000 + *(.data) + .data 0x00000000c0106000 0x4 obj/kmain.o + .data 0x00000000c0106004 0x1 obj/vga_terminal.o + *fill* 0x00000000c0106005 0x3 + .data 0x00000000c0106008 0x4 obj/stdlib.o + .data 0x00000000c010600c 0x0 obj/gdt.o + .data 0x00000000c010600c 0x6 obj/x86gdt.o + .data 0x00000000c0106012 0x0 obj/pic.o + .data 0x00000000c0106012 0x0 obj/idt.o + *fill* 0x00000000c0106012 0x2 + .data 0x00000000c0106014 0x6 obj/x86idt.o + .data 0x00000000c010601a 0x0 obj/string.o + .data 0x00000000c010601a 0x0 obj/paging.o + .data 0x00000000c010601a 0x0 obj/x86_utils.o + *fill* 0x00000000c010601a 0x6 + .data 0x00000000c0106020 0x84 obj/keyboard.o + .data 0x00000000c01060a4 0x0 obj/exceptions.o + .data 0x00000000c01060a4 0x0 obj/memory.o + *fill* 0x00000000c01060a4 0x1c + .data 0x00000000c01060c0 0x1b0 obj/pci.o + .data 0x00000000c0106270 0x0 obj/pit.o + .data 0x00000000c0106270 0x0 obj/ahci.o + +.igot.plt 0x00000000c0106270 0x0 load address 0x0000000000106270 + .igot.plt 0x00000000c0106270 0x0 obj/multiboot.o + +.bss 0x00000000c0107000 0x40d200 load address 0x0000000000107000 + *(COMMON) + COMMON 0x00000000c0107000 0x8 obj/vga_terminal.o + 0x00000000c0107000 s_iY + 0x00000000c0107004 s_iX + *(.bss) + *fill* 0x00000000c0107008 0xff8 + .bss 0x00000000c0108000 0x409004 obj/multiboot.o + 0x00000000c0108000 page_directories + 0x00000000c0109000 page_tables + 0x00000000c0511000 legacy_esp + .bss 0x00000000c0511004 0x0 obj/kmain.o + .bss 0x00000000c0511004 0x0 obj/vga_terminal.o + .bss 0x00000000c0511004 0x0 obj/stdlib.o + *fill* 0x00000000c0511004 0x4 + .bss 0x00000000c0511008 0x18 obj/gdt.o + .bss 0x00000000c0511020 0x0 obj/pic.o + .bss 0x00000000c0511020 0xc00 obj/idt.o + .bss 0x00000000c0511c20 0x0 obj/string.o + .bss 0x00000000c0511c20 0x0 obj/paging.o + .bss 0x00000000c0511c20 0x0 obj/x86_utils.o + .bss 0x00000000c0511c20 0x8 obj/keyboard.o + .bss 0x00000000c0511c28 0x0 obj/exceptions.o + *fill* 0x00000000c0511c28 0x18 + .bss 0x00000000c0511c40 0x108 obj/memory.o + *fill* 0x00000000c0511d48 0x18 + .bss 0x00000000c0511d60 0x404 obj/pci.o + .bss 0x00000000c0512164 0x4 obj/pit.o + *fill* 0x00000000c0512168 0xe98 + .bss 0x00000000c0513000 0x1200 obj/ahci.o + 0x00000000c0514200 _kernel_end = . +LOAD obj/multiboot.o +LOAD obj/kmain.o +LOAD obj/vga_terminal.o +LOAD obj/stdlib.o +LOAD obj/x86stdlib.o +LOAD obj/gdt.o +LOAD obj/x86gdt.o +LOAD obj/pic.o +LOAD obj/idt.o +LOAD obj/x86idt.o +LOAD obj/x86int.o +LOAD obj/string.o +LOAD obj/paging.o +LOAD obj/x86utils.o +LOAD obj/x86_utils.o +LOAD obj/keyboard.o +LOAD obj/exceptions.o +LOAD obj/memory.o +LOAD obj/pci.o +LOAD obj/x86io.o +LOAD obj/pit.o +LOAD obj/ahci.o +OUTPUT(os/lenochka.bin elf32-i386) + +.comment 0x0000000000000000 0x11 + .comment 0x0000000000000000 0x11 obj/kmain.o + 0x12 (size before relaxing) + .comment 0x0000000000000011 0x12 obj/vga_terminal.o + .comment 0x0000000000000011 0x12 obj/stdlib.o + .comment 0x0000000000000011 0x12 obj/gdt.o + .comment 0x0000000000000011 0x12 obj/pic.o + .comment 0x0000000000000011 0x12 obj/idt.o + .comment 0x0000000000000011 0x12 obj/string.o + .comment 0x0000000000000011 0x12 obj/paging.o + .comment 0x0000000000000011 0x12 obj/x86_utils.o + .comment 0x0000000000000011 0x12 obj/keyboard.o + .comment 0x0000000000000011 0x12 obj/exceptions.o + .comment 0x0000000000000011 0x12 obj/memory.o + .comment 0x0000000000000011 0x12 obj/pci.o + .comment 0x0000000000000011 0x12 obj/pit.o + .comment 0x0000000000000011 0x12 obj/ahci.o diff --git a/memory_map.txt b/memory_map.txt new file mode 100644 index 0000000..6cebabc --- /dev/null +++ b/memory_map.txt @@ -0,0 +1,3 @@ +0xC0000000 - 0xC1000000 - kernel +0xC1000000 - 0xC10B8000 - free kernel memory (736 KB) +0xC10B8000 - 0xC10B9000 - video buf diff --git a/os/grub2.cfg b/os/grub2.cfg new file mode 100644 index 0000000..85e5474 --- /dev/null +++ b/os/grub2.cfg @@ -0,0 +1,7 @@ +set timeout=15 +set default=0 + +menuentry "Lenochka" { + multiboot /boot/lenochka.bin + boot +} diff --git a/os/lenochka.elf b/os/lenochka.elf new file mode 100644 index 0000000000000000000000000000000000000000..d0ba03e2f6bb88a918f6a26daf95c72611de0f78 GIT binary patch literal 114640 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 literal 0 HcmV?d00001 diff --git a/u_vga16.bdf b/u_vga16.bdf new file mode 100644 index 0000000..4108a6d --- /dev/null +++ b/u_vga16.bdf @@ -0,0 +1,66709 @@ +STARTFONT 2.1 +FONT -Bolkhov-VGA-Medium-R-Normal--16-160-75-75-C-80-iso10646-1 +SIZE 16 75 75 +FONTBOUNDINGBOX 8 16 0 -4 +STARTPROPERTIES 24 +FOUNDRY "Bolkhov" +FAMILY_NAME "VGA" +WEIGHT_NAME "Medium" +SLANT "R" +SETWIDTH_NAME "Normal" +ADD_STYLE_NAME "" +PIXEL_SIZE 16 +POINT_SIZE 160 +RESOLUTION_X 75 +RESOLUTION_Y 75 +SPACING "C" +AVERAGE_WIDTH 80 +CHARSET_REGISTRY "iso10646" +CHARSET_ENCODING "1" +CAP_HEIGHT 10 +X_HEIGHT 7 +FONT_ASCENT 12 +FONT_DESCENT 4 +FACE_NAME "Vga Unicode" +COPYRIGHT "Copyright (c) 2000 Dmitry Bolkhovityanov, bolkhov@inp.nsk.su" +HOMEPAGE "http://www.inp.nsk.su/~bolkhov/files/fonts/univga/" +NOTICE "VGA is a trademark of IBM Corporation." +DEFAULT_CHAR 0 +_XMBDFED_INFO "Edited with xmbdfed 4.4." +ENDPROPERTIES +CHARS 2899 +STARTCHAR char0 +ENCODING 0 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +DA +02 +80 +82 +02 +80 +82 +02 +80 +B6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR space +ENCODING 32 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR exclam +ENCODING 33 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +18 +3C +3C +3C +18 +18 +18 +00 +18 +18 +00 +00 +00 +00 +ENDCHAR +STARTCHAR quotedbl +ENCODING 34 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +66 +66 +66 +24 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR numbersign +ENCODING 35 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +6C +6C +FE +6C +6C +6C +FE +6C +6C +00 +00 +00 +00 +ENDCHAR +STARTCHAR dollar +ENCODING 36 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +18 +18 +7C +C6 +C2 +C0 +7C +06 +06 +86 +C6 +7C +18 +18 +00 +00 +ENDCHAR +STARTCHAR percent +ENCODING 37 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +C2 +C6 +0C +18 +30 +60 +C6 +86 +00 +00 +00 +00 +ENDCHAR +STARTCHAR ampersand +ENCODING 38 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +38 +6C +6C +38 +76 +DC +CC +CC +CC +76 +00 +00 +00 +00 +ENDCHAR +STARTCHAR quotesingle +ENCODING 39 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +30 +30 +30 +20 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR parenleft +ENCODING 40 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +0C +18 +30 +30 +30 +30 +30 +30 +18 +0C +00 +00 +00 +00 +ENDCHAR +STARTCHAR parenright +ENCODING 41 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +30 +18 +0C +0C +0C +0C +0C +0C +18 +30 +00 +00 +00 +00 +ENDCHAR +STARTCHAR asterisk +ENCODING 42 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +66 +3C +FF +3C +66 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR plus +ENCODING 43 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +18 +18 +7E +18 +18 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR comma +ENCODING 44 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +18 +18 +18 +30 +00 +00 +00 +ENDCHAR +STARTCHAR hyphen +ENCODING 45 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +FE +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR period +ENCODING 46 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +18 +18 +00 +00 +00 +00 +ENDCHAR +STARTCHAR slash +ENCODING 47 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +02 +06 +0C +18 +30 +60 +C0 +80 +00 +00 +00 +00 +ENDCHAR +STARTCHAR zero +ENCODING 48 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +38 +6C +C6 +C6 +D6 +D6 +C6 +C6 +6C +38 +00 +00 +00 +00 +ENDCHAR +STARTCHAR one +ENCODING 49 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +18 +38 +78 +18 +18 +18 +18 +18 +18 +7E +00 +00 +00 +00 +ENDCHAR +STARTCHAR two +ENCODING 50 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +7C +C6 +06 +0C +18 +30 +60 +C0 +C6 +FE +00 +00 +00 +00 +ENDCHAR +STARTCHAR three +ENCODING 51 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +7C +C6 +06 +06 +3C +06 +06 +06 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR four +ENCODING 52 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +0C +1C +3C +6C +CC +FE +0C +0C +0C +1E +00 +00 +00 +00 +ENDCHAR +STARTCHAR five +ENCODING 53 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +FE +C0 +C0 +C0 +FC +06 +06 +06 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR six +ENCODING 54 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +38 +60 +C0 +C0 +FC +C6 +C6 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR seven +ENCODING 55 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +FE +C6 +06 +06 +0C +18 +30 +30 +30 +30 +00 +00 +00 +00 +ENDCHAR +STARTCHAR eight +ENCODING 56 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +7C +C6 +C6 +C6 +7C +C6 +C6 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR nine +ENCODING 57 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +7C +C6 +C6 +C6 +7E +06 +06 +06 +0C +78 +00 +00 +00 +00 +ENDCHAR +STARTCHAR colon +ENCODING 58 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +18 +18 +00 +00 +00 +18 +18 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR semicolon +ENCODING 59 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +18 +18 +00 +00 +00 +18 +18 +30 +00 +00 +00 +00 +ENDCHAR +STARTCHAR less +ENCODING 60 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +06 +0C +18 +30 +60 +30 +18 +0C +06 +00 +00 +00 +00 +ENDCHAR +STARTCHAR equal +ENCODING 61 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +7E +00 +00 +7E +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR greater +ENCODING 62 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +60 +30 +18 +0C +06 +0C +18 +30 +60 +00 +00 +00 +00 +ENDCHAR +STARTCHAR question +ENCODING 63 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +7C +C6 +C6 +0C +18 +18 +18 +00 +18 +18 +00 +00 +00 +00 +ENDCHAR +STARTCHAR at +ENCODING 64 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +7C +C6 +C6 +DE +DE +DE +DC +C0 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR A +ENCODING 65 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +10 +38 +6C +C6 +C6 +FE +C6 +C6 +C6 +C6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR B +ENCODING 66 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +FC +66 +66 +66 +7C +66 +66 +66 +66 +FC +00 +00 +00 +00 +ENDCHAR +STARTCHAR C +ENCODING 67 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +3C +66 +C2 +C0 +C0 +C0 +C0 +C2 +66 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR D +ENCODING 68 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +F8 +6C +66 +66 +66 +66 +66 +66 +6C +F8 +00 +00 +00 +00 +ENDCHAR +STARTCHAR E +ENCODING 69 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +FE +66 +62 +68 +78 +68 +60 +62 +66 +FE +00 +00 +00 +00 +ENDCHAR +STARTCHAR F +ENCODING 70 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +FE +66 +62 +68 +78 +68 +60 +60 +60 +F0 +00 +00 +00 +00 +ENDCHAR +STARTCHAR G +ENCODING 71 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +3C +66 +C2 +C0 +C0 +DE +C6 +C6 +66 +3A +00 +00 +00 +00 +ENDCHAR +STARTCHAR H +ENCODING 72 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +C6 +C6 +C6 +C6 +FE +C6 +C6 +C6 +C6 +C6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR I +ENCODING 73 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +3C +18 +18 +18 +18 +18 +18 +18 +18 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR J +ENCODING 74 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +1E +0C +0C +0C +0C +0C +CC +CC +CC +78 +00 +00 +00 +00 +ENDCHAR +STARTCHAR K +ENCODING 75 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +E6 +66 +66 +6C +78 +78 +6C +66 +66 +E6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR L +ENCODING 76 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +F0 +60 +60 +60 +60 +60 +60 +62 +66 +FE +00 +00 +00 +00 +ENDCHAR +STARTCHAR M +ENCODING 77 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +C6 +EE +FE +FE +D6 +C6 +C6 +C6 +C6 +C6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR N +ENCODING 78 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +C6 +E6 +F6 +FE +DE +CE +C6 +C6 +C6 +C6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR O +ENCODING 79 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +7C +C6 +C6 +C6 +C6 +C6 +C6 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR P +ENCODING 80 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +FC +66 +66 +66 +7C +60 +60 +60 +60 +F0 +00 +00 +00 +00 +ENDCHAR +STARTCHAR Q +ENCODING 81 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +7C +C6 +C6 +C6 +C6 +C6 +C6 +D6 +DE +7C +0C +0E +00 +00 +ENDCHAR +STARTCHAR R +ENCODING 82 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +FC +66 +66 +66 +7C +6C +66 +66 +66 +E6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR S +ENCODING 83 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +7C +C6 +C6 +60 +38 +0C +06 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR T +ENCODING 84 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +7E +7E +5A +18 +18 +18 +18 +18 +18 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR U +ENCODING 85 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +C6 +C6 +C6 +C6 +C6 +C6 +C6 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR V +ENCODING 86 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +C6 +C6 +C6 +C6 +C6 +C6 +C6 +6C +38 +10 +00 +00 +00 +00 +ENDCHAR +STARTCHAR W +ENCODING 87 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +C6 +C6 +C6 +C6 +D6 +D6 +D6 +FE +EE +6C +00 +00 +00 +00 +ENDCHAR +STARTCHAR X +ENCODING 88 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +C6 +C6 +6C +7C +38 +38 +7C +6C +C6 +C6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR Y +ENCODING 89 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +66 +66 +66 +66 +3C +18 +18 +18 +18 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR Z +ENCODING 90 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +FE +C6 +86 +0C +18 +30 +60 +C2 +C6 +FE +00 +00 +00 +00 +ENDCHAR +STARTCHAR bracketleft +ENCODING 91 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +3C +30 +30 +30 +30 +30 +30 +30 +30 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR backslash +ENCODING 92 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +80 +C0 +E0 +70 +38 +1C +0E +06 +02 +00 +00 +00 +00 +ENDCHAR +STARTCHAR bracketright +ENCODING 93 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +3C +0C +0C +0C +0C +0C +0C +0C +0C +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR asciicircum +ENCODING 94 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +10 +38 +6C +C6 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR underscore +ENCODING 95 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +FF +00 +00 +ENDCHAR +STARTCHAR grave +ENCODING 96 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +30 +30 +18 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR a +ENCODING 97 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +78 +0C +7C +CC +CC +CC +76 +00 +00 +00 +00 +ENDCHAR +STARTCHAR b +ENCODING 98 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +E0 +60 +60 +78 +6C +66 +66 +66 +66 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR c +ENCODING 99 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +7C +C6 +C0 +C0 +C0 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR d +ENCODING 100 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +1C +0C +0C +3C +6C +CC +CC +CC +CC +76 +00 +00 +00 +00 +ENDCHAR +STARTCHAR e +ENCODING 101 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +7C +C6 +FE +C0 +C0 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR f +ENCODING 102 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +38 +6C +64 +60 +F0 +60 +60 +60 +60 +F0 +00 +00 +00 +00 +ENDCHAR +STARTCHAR g +ENCODING 103 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +76 +CC +CC +CC +CC +CC +7C +0C +CC +78 +00 +ENDCHAR +STARTCHAR h +ENCODING 104 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +E0 +60 +60 +6C +76 +66 +66 +66 +66 +E6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR i +ENCODING 105 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +18 +18 +00 +38 +18 +18 +18 +18 +18 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR j +ENCODING 106 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +06 +06 +00 +0E +06 +06 +06 +06 +06 +06 +66 +66 +3C +00 +ENDCHAR +STARTCHAR k +ENCODING 107 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +E0 +60 +60 +66 +6C +78 +78 +6C +66 +E6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR l +ENCODING 108 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +38 +18 +18 +18 +18 +18 +18 +18 +18 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR m +ENCODING 109 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +EC +FE +D6 +D6 +D6 +D6 +C6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR n +ENCODING 110 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +DC +66 +66 +66 +66 +66 +66 +00 +00 +00 +00 +ENDCHAR +STARTCHAR o +ENCODING 111 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +7C +C6 +C6 +C6 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR p +ENCODING 112 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +DC +66 +66 +66 +66 +66 +7C +60 +60 +F0 +00 +ENDCHAR +STARTCHAR q +ENCODING 113 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +76 +CC +CC +CC +CC +CC +7C +0C +0C +1E +00 +ENDCHAR +STARTCHAR r +ENCODING 114 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +DC +76 +66 +60 +60 +60 +F0 +00 +00 +00 +00 +ENDCHAR +STARTCHAR s +ENCODING 115 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +7C +C6 +60 +38 +0C +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR t +ENCODING 116 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +10 +30 +30 +FC +30 +30 +30 +30 +36 +1C +00 +00 +00 +00 +ENDCHAR +STARTCHAR u +ENCODING 117 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +CC +CC +CC +CC +CC +CC +76 +00 +00 +00 +00 +ENDCHAR +STARTCHAR v +ENCODING 118 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +66 +66 +66 +66 +66 +3C +18 +00 +00 +00 +00 +ENDCHAR +STARTCHAR w +ENCODING 119 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +C6 +C6 +D6 +D6 +D6 +FE +6C +00 +00 +00 +00 +ENDCHAR +STARTCHAR x +ENCODING 120 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +C6 +6C +38 +38 +38 +6C +C6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR y +ENCODING 121 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +C6 +C6 +C6 +C6 +C6 +C6 +7E +06 +0C +F8 +00 +ENDCHAR +STARTCHAR z +ENCODING 122 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +FE +CC +18 +30 +60 +C6 +FE +00 +00 +00 +00 +ENDCHAR +STARTCHAR braceleft +ENCODING 123 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +0E +18 +18 +18 +70 +18 +18 +18 +18 +0E +00 +00 +00 +00 +ENDCHAR +STARTCHAR bar +ENCODING 124 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +18 +18 +18 +18 +00 +18 +18 +18 +18 +18 +00 +00 +00 +00 +ENDCHAR +STARTCHAR braceright +ENCODING 125 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +70 +18 +18 +18 +0E +18 +18 +18 +18 +70 +00 +00 +00 +00 +ENDCHAR +STARTCHAR asciitilde +ENCODING 126 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +76 +DC +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char127 +ENCODING 127 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +10 +38 +6C +C6 +C6 +C6 +FE +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR space +ENCODING 160 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR exclamdown +ENCODING 161 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +18 +18 +00 +18 +18 +18 +3C +3C +3C +18 +00 +00 +00 +00 +ENDCHAR +STARTCHAR cent +ENCODING 162 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +18 +18 +3C +66 +60 +60 +60 +66 +3C +18 +18 +00 +00 +00 +00 +ENDCHAR +STARTCHAR sterling +ENCODING 163 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +38 +6C +64 +60 +F0 +60 +60 +60 +60 +E6 +FC +00 +00 +00 +00 +ENDCHAR +STARTCHAR currency +ENCODING 164 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +66 +3C +66 +66 +66 +3C +66 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR yen +ENCODING 165 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +66 +66 +3C +18 +7E +18 +7E +18 +18 +18 +00 +00 +00 +00 +ENDCHAR +STARTCHAR brokenbar +ENCODING 166 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +18 +18 +18 +18 +00 +18 +18 +18 +18 +18 +00 +00 +00 +00 +ENDCHAR +STARTCHAR section +ENCODING 167 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +7C +C6 +60 +38 +6C +C6 +C6 +6C +38 +0C +C6 +7C +00 +00 +00 +ENDCHAR +STARTCHAR dieresis +ENCODING 168 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +6C +6C +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR copyright +ENCODING 169 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +3C +42 +99 +A5 +A1 +A1 +A5 +99 +42 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR ordfeminine +ENCODING 170 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +3C +6C +6C +3E +00 +7E +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR guillemotleft +ENCODING 171 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +36 +6C +D8 +6C +36 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR logicalnot +ENCODING 172 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +FE +06 +06 +06 +06 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR hyphen +ENCODING 173 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +3C +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR registered +ENCODING 174 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +38 +44 +BA +B2 +AA +44 +38 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR macron +ENCODING 175 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +7C +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR degree +ENCODING 176 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +38 +6C +6C +38 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR plusminus +ENCODING 177 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +18 +18 +7E +18 +18 +00 +7E +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR twosuperior +ENCODING 178 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +70 +D8 +30 +60 +C8 +F8 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR threesuperior +ENCODING 179 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +70 +D8 +30 +18 +D8 +70 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR acute +ENCODING 180 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +0C +18 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR mu +ENCODING 181 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +CC +CC +CC +CC +CC +CC +F6 +C0 +C0 +C0 +00 +ENDCHAR +STARTCHAR paragraph +ENCODING 182 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +7F +DB +DB +DB +7B +1B +1B +1B +1B +1B +00 +00 +00 +00 +ENDCHAR +STARTCHAR periodcentered +ENCODING 183 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +18 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR cedilla +ENCODING 184 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +18 +0C +38 +00 +ENDCHAR +STARTCHAR onesuperior +ENCODING 185 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +30 +70 +30 +30 +30 +78 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR ordmasculine +ENCODING 186 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +38 +6C +6C +38 +00 +7C +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR guillemotright +ENCODING 187 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +D8 +6C +36 +6C +D8 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR onequarter +ENCODING 188 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +C0 +C0 +C2 +C6 +CC +18 +30 +66 +CE +9E +3E +06 +06 +00 +00 +ENDCHAR +STARTCHAR onehalf +ENCODING 189 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +C0 +C0 +C2 +C6 +CC +18 +30 +60 +DC +86 +0C +18 +3E +00 +00 +ENDCHAR +STARTCHAR threequarters +ENCODING 190 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +E0 +30 +62 +36 +EC +18 +30 +66 +CE +9E +3E +06 +06 +00 +00 +ENDCHAR +STARTCHAR questiondown +ENCODING 191 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +30 +30 +00 +30 +30 +60 +C0 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR Agrave +ENCODING 192 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +60 +30 +00 +10 +38 +6C +C6 +C6 +FE +C6 +C6 +C6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR Aacute +ENCODING 193 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +0C +18 +00 +10 +38 +6C +C6 +C6 +FE +C6 +C6 +C6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR Acircumflex +ENCODING 194 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +10 +38 +6C +10 +38 +6C +C6 +C6 +FE +C6 +C6 +C6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR Atilde +ENCODING 195 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +76 +DC +00 +10 +38 +6C +C6 +C6 +FE +C6 +C6 +C6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR Adieresis +ENCODING 196 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +6C +6C +00 +10 +38 +6C +C6 +C6 +FE +C6 +C6 +C6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR Aring +ENCODING 197 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +38 +6C +38 +10 +38 +6C +C6 +C6 +FE +C6 +C6 +C6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR AE +ENCODING 198 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +3E +6C +CC +CC +FE +CC +CC +CC +CC +CE +00 +00 +00 +00 +ENDCHAR +STARTCHAR Ccedilla +ENCODING 199 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +3C +66 +C2 +C0 +C0 +C0 +C0 +C2 +66 +3C +18 +0C +38 +00 +ENDCHAR +STARTCHAR Egrave +ENCODING 200 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +30 +18 +00 +FE +66 +62 +68 +78 +68 +62 +66 +FE +00 +00 +00 +00 +ENDCHAR +STARTCHAR Eacute +ENCODING 201 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +0C +18 +00 +FE +66 +62 +68 +78 +68 +62 +66 +FE +00 +00 +00 +00 +ENDCHAR +STARTCHAR Ecircumflex +ENCODING 202 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +10 +38 +44 +FE +66 +62 +68 +78 +68 +62 +66 +FE +00 +00 +00 +00 +ENDCHAR +STARTCHAR Edieresis +ENCODING 203 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +6C +6C +00 +FE +66 +62 +68 +78 +68 +62 +66 +FE +00 +00 +00 +00 +ENDCHAR +STARTCHAR Igrave +ENCODING 204 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +30 +18 +00 +3C +18 +18 +18 +18 +18 +18 +18 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR Iacute +ENCODING 205 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +0C +18 +00 +3C +18 +18 +18 +18 +18 +18 +18 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR Icircumflex +ENCODING 206 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +18 +3C +42 +3C +18 +18 +18 +18 +18 +18 +18 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR Idieresis +ENCODING 207 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +66 +66 +00 +3C +18 +18 +18 +18 +18 +18 +18 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR Eth +ENCODING 208 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +F8 +6C +66 +66 +F6 +66 +66 +66 +6C +F8 +00 +00 +00 +00 +ENDCHAR +STARTCHAR Ntilde +ENCODING 209 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +76 +DC +00 +C6 +E6 +F6 +FE +DE +CE +C6 +C6 +C6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR Ograve +ENCODING 210 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +60 +30 +00 +7C +C6 +C6 +C6 +C6 +C6 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR Oacute +ENCODING 211 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +0C +18 +00 +7C +C6 +C6 +C6 +C6 +C6 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR Ocircumflex +ENCODING 212 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +10 +38 +44 +7C +C6 +C6 +C6 +C6 +C6 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR Otilde +ENCODING 213 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +76 +DC +00 +7C +C6 +C6 +C6 +C6 +C6 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR Odieresis +ENCODING 214 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +6C +6C +00 +7C +C6 +C6 +C6 +C6 +C6 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR multiply +ENCODING 215 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +66 +3C +18 +3C +66 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR Oslash +ENCODING 216 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +7A +C4 +CE +CE +D6 +D6 +E6 +E6 +46 +BC +00 +00 +00 +00 +ENDCHAR +STARTCHAR Ugrave +ENCODING 217 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +60 +30 +00 +C6 +C6 +C6 +C6 +C6 +C6 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR Uacute +ENCODING 218 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +0C +18 +00 +C6 +C6 +C6 +C6 +C6 +C6 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR Ucircumflex +ENCODING 219 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +10 +38 +44 +C6 +C6 +C6 +C6 +C6 +C6 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR Udieresis +ENCODING 220 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +6C +6C +00 +C6 +C6 +C6 +C6 +C6 +C6 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR Yacute +ENCODING 221 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +0C +18 +00 +66 +66 +66 +3C +18 +18 +18 +18 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR Thorn +ENCODING 222 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +F0 +60 +7C +66 +66 +66 +66 +7C +60 +F0 +00 +00 +00 +00 +ENDCHAR +STARTCHAR germandbls +ENCODING 223 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +3C +66 +66 +66 +6C +66 +66 +66 +66 +EC +00 +00 +00 +00 +ENDCHAR +STARTCHAR agrave +ENCODING 224 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +60 +30 +00 +78 +0C +7C +CC +CC +CC +76 +00 +00 +00 +00 +ENDCHAR +STARTCHAR aacute +ENCODING 225 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +18 +30 +00 +78 +0C +7C +CC +CC +CC +76 +00 +00 +00 +00 +ENDCHAR +STARTCHAR acircumflex +ENCODING 226 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +10 +38 +6C +00 +78 +0C +7C +CC +CC +CC +76 +00 +00 +00 +00 +ENDCHAR +STARTCHAR atilde +ENCODING 227 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +76 +DC +00 +78 +0C +7C +CC +CC +CC +76 +00 +00 +00 +00 +ENDCHAR +STARTCHAR adieresis +ENCODING 228 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +6C +6C +00 +78 +0C +7C +CC +CC +CC +76 +00 +00 +00 +00 +ENDCHAR +STARTCHAR aring +ENCODING 229 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +38 +6C +38 +00 +78 +0C +7C +CC +CC +CC +76 +00 +00 +00 +00 +ENDCHAR +STARTCHAR ae +ENCODING 230 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +CC +76 +36 +7E +D8 +D8 +6E +00 +00 +00 +00 +ENDCHAR +STARTCHAR ccedilla +ENCODING 231 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +7C +C6 +C0 +C0 +C0 +C6 +7C +18 +0C +38 +00 +ENDCHAR +STARTCHAR egrave +ENCODING 232 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +60 +30 +00 +7C +C6 +FE +C0 +C0 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR eacute +ENCODING 233 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +0C +18 +00 +7C +C6 +FE +C0 +C0 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR ecircumflex +ENCODING 234 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +10 +38 +6C +00 +7C +C6 +FE +C0 +C0 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR edieresis +ENCODING 235 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +6C +6C +00 +7C +C6 +FE +C0 +C0 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR igrave +ENCODING 236 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +30 +18 +00 +38 +18 +18 +18 +18 +18 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR iacute +ENCODING 237 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +0C +18 +00 +38 +18 +18 +18 +18 +18 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR icircumflex +ENCODING 238 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +10 +38 +6C +00 +38 +18 +18 +18 +18 +18 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR idieresis +ENCODING 239 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +66 +66 +00 +38 +18 +18 +18 +18 +18 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR eth +ENCODING 240 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +76 +1C +3C +06 +7E +C6 +C6 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR ntilde +ENCODING 241 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +76 +DC +00 +DC +66 +66 +66 +66 +66 +66 +00 +00 +00 +00 +ENDCHAR +STARTCHAR ograve +ENCODING 242 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +60 +30 +00 +7C +C6 +C6 +C6 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR oacute +ENCODING 243 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +0C +18 +00 +7C +C6 +C6 +C6 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR ocircumflex +ENCODING 244 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +10 +38 +6C +00 +7C +C6 +C6 +C6 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR otilde +ENCODING 245 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +76 +DC +00 +7C +C6 +C6 +C6 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR odieresis +ENCODING 246 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +6C +6C +00 +7C +C6 +C6 +C6 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR divide +ENCODING 247 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +18 +18 +00 +7E +00 +18 +18 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR oslash +ENCODING 248 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +7A +C4 +CE +D6 +E6 +46 +BC +00 +00 +00 +00 +ENDCHAR +STARTCHAR ugrave +ENCODING 249 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +60 +30 +00 +CC +CC +CC +CC +CC +CC +76 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uacute +ENCODING 250 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +18 +30 +00 +CC +CC +CC +CC +CC +CC +76 +00 +00 +00 +00 +ENDCHAR +STARTCHAR ucircumflex +ENCODING 251 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +10 +38 +6C +00 +CC +CC +CC +CC +CC +CC +76 +00 +00 +00 +00 +ENDCHAR +STARTCHAR udieresis +ENCODING 252 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +CC +CC +00 +CC +CC +CC +CC +CC +CC +76 +00 +00 +00 +00 +ENDCHAR +STARTCHAR yacute +ENCODING 253 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +0C +18 +00 +C6 +C6 +C6 +C6 +C6 +C6 +7E +06 +0C +F8 +00 +ENDCHAR +STARTCHAR thorn +ENCODING 254 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +E0 +60 +60 +7C +66 +66 +66 +66 +66 +7C +60 +60 +F0 +00 +ENDCHAR +STARTCHAR ydieresis +ENCODING 255 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +6C +6C +00 +C6 +C6 +C6 +C6 +C6 +C6 +7E +06 +0C +F8 +00 +ENDCHAR +STARTCHAR Amacron +ENCODING 256 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +7C +00 +10 +38 +6C +C6 +C6 +FE +C6 +C6 +C6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR amacron +ENCODING 257 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +7C +00 +78 +0C +7C +CC +CC +CC +76 +00 +00 +00 +00 +ENDCHAR +STARTCHAR Abreve +ENCODING 258 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +6C +38 +00 +10 +38 +6C +C6 +C6 +FE +C6 +C6 +C6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR abreve +ENCODING 259 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +6C +38 +00 +78 +0C +7C +CC +CC +CC +76 +00 +00 +00 +00 +ENDCHAR +STARTCHAR Aogonek +ENCODING 260 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +10 +38 +6C +C6 +C6 +FE +C6 +C6 +C6 +C6 +0C +18 +0E +00 +ENDCHAR +STARTCHAR aogonek +ENCODING 261 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +78 +0C +7C +CC +CC +CC +76 +0C +18 +0E +00 +ENDCHAR +STARTCHAR Cacute +ENCODING 262 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +0C +18 +00 +3C +66 +C2 +C0 +C0 +C0 +C2 +66 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR cacute +ENCODING 263 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +0C +18 +00 +7C +C6 +C0 +C0 +C0 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR Ccircumflex +ENCODING 264 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +10 +38 +44 +3C +66 +C2 +C0 +C0 +C0 +C2 +66 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR ccircumflex +ENCODING 265 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +10 +38 +6C +00 +7C +C6 +C0 +C0 +C0 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR Cdotaccent +ENCODING 266 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +18 +18 +00 +3C +66 +C2 +C0 +C0 +C0 +C2 +66 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR cdotaccent +ENCODING 267 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +30 +30 +00 +7C +C6 +C0 +C0 +C0 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR Ccaron +ENCODING 268 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +6C +38 +10 +3C +66 +C2 +C0 +C0 +C0 +C2 +66 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR ccaron +ENCODING 269 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +6C +38 +10 +00 +7C +C6 +C0 +C0 +C0 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR Dcaron +ENCODING 270 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +6C +38 +10 +F8 +6C +66 +66 +66 +66 +66 +6C +F8 +00 +00 +00 +00 +ENDCHAR +STARTCHAR dcaron +ENCODING 271 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +6C +38 +10 +0C +0C +3C +6C +CC +CC +CC +CC +76 +00 +00 +00 +00 +ENDCHAR +STARTCHAR Dcroat +ENCODING 272 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +F8 +6C +66 +66 +F6 +66 +66 +66 +6C +F8 +00 +00 +00 +00 +ENDCHAR +STARTCHAR dcroat +ENCODING 273 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +0C +3E +0C +3C +6C +CC +CC +CC +CC +76 +00 +00 +00 +00 +ENDCHAR +STARTCHAR Emacron +ENCODING 274 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +7C +00 +FE +66 +62 +68 +78 +68 +62 +66 +FE +00 +00 +00 +00 +ENDCHAR +STARTCHAR emacron +ENCODING 275 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +7C +00 +7C +C6 +FE +C0 +C0 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR Ebreve +ENCODING 276 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +6C +38 +00 +FE +66 +62 +68 +78 +68 +62 +66 +FE +00 +00 +00 +00 +ENDCHAR +STARTCHAR ebreve +ENCODING 277 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +6C +38 +00 +7C +C6 +FE +C0 +C0 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR Edotaccent +ENCODING 278 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +18 +18 +00 +FE +66 +62 +68 +78 +68 +62 +66 +FE +00 +00 +00 +00 +ENDCHAR +STARTCHAR edotaccent +ENCODING 279 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +30 +30 +00 +7C +C6 +FE +C0 +C0 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR Eogonek +ENCODING 280 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +FE +66 +62 +68 +78 +68 +62 +66 +FE +18 +30 +1C +00 +ENDCHAR +STARTCHAR eogonek +ENCODING 281 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +7C +C6 +FE +C0 +C0 +C6 +7C +30 +60 +38 +00 +ENDCHAR +STARTCHAR Ecaron +ENCODING 282 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +6C +38 +10 +FE +66 +62 +68 +78 +68 +62 +66 +FE +00 +00 +00 +00 +ENDCHAR +STARTCHAR ecaron +ENCODING 283 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +6C +38 +10 +00 +7C +C6 +FE +C0 +C0 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR Gcircumflex +ENCODING 284 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +10 +38 +44 +3C +66 +C2 +C0 +DE +C6 +C6 +66 +3A +00 +00 +00 +00 +ENDCHAR +STARTCHAR gcircumflex +ENCODING 285 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +10 +38 +6C +00 +76 +CC +CC +CC +CC +CC +7C +0C +CC +78 +00 +ENDCHAR +STARTCHAR Gbreve +ENCODING 286 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +6C +38 +00 +3C +66 +C2 +C0 +DE +C6 +C6 +66 +3A +00 +00 +00 +00 +ENDCHAR +STARTCHAR gbreve +ENCODING 287 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +6C +38 +00 +76 +CC +CC +CC +CC +CC +7C +0C +CC +78 +00 +ENDCHAR +STARTCHAR Gdotaccent +ENCODING 288 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +18 +18 +00 +3C +66 +C2 +C0 +DE +C6 +C6 +66 +3A +00 +00 +00 +00 +ENDCHAR +STARTCHAR gdotaccent +ENCODING 289 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +30 +30 +00 +76 +CC +CC +CC +CC +CC +7C +0C +CC +78 +00 +ENDCHAR +STARTCHAR Gcommaaccent +ENCODING 290 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +3C +66 +C2 +C0 +C0 +DE +C6 +C6 +66 +3A +00 +18 +18 +30 +ENDCHAR +STARTCHAR gcommaaccent +ENCODING 291 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +18 +30 +30 +00 +76 +CC +CC +CC +CC +CC +7C +0C +CC +78 +00 +ENDCHAR +STARTCHAR Hcircumflex +ENCODING 292 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +10 +38 +00 +C6 +C6 +C6 +C6 +FE +C6 +C6 +C6 +C6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR hcircumflex +ENCODING 293 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +10 +38 +44 +E0 +60 +6C +76 +66 +66 +66 +66 +E6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR Hbar +ENCODING 294 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +66 +FF +66 +66 +7E +66 +66 +66 +66 +66 +00 +00 +00 +00 +ENDCHAR +STARTCHAR hbar +ENCODING 295 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +60 +F8 +60 +6C +76 +66 +66 +66 +66 +E6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR Itilde +ENCODING 296 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +76 +DC +00 +3C +18 +18 +18 +18 +18 +18 +18 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR itilde +ENCODING 297 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +76 +DC +00 +38 +18 +18 +18 +18 +18 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR Imacron +ENCODING 298 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +7E +00 +3C +18 +18 +18 +18 +18 +18 +18 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR imacron +ENCODING 299 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +7E +00 +38 +18 +18 +18 +18 +18 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR Ibreve +ENCODING 300 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +66 +3C +00 +3C +18 +18 +18 +18 +18 +18 +18 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR ibreve +ENCODING 301 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +66 +3C +00 +38 +18 +18 +18 +18 +18 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR Iogonek +ENCODING 302 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +3C +18 +18 +18 +18 +18 +18 +18 +3C +18 +30 +1C +00 +ENDCHAR +STARTCHAR iogonek +ENCODING 303 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +18 +18 +00 +38 +18 +18 +18 +18 +18 +3C +18 +30 +1C +00 +ENDCHAR +STARTCHAR Idotaccent +ENCODING 304 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +18 +18 +00 +3C +18 +18 +18 +18 +18 +18 +18 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR dotlessi +ENCODING 305 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +38 +18 +18 +18 +18 +18 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR IJ +ENCODING 306 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +F7 +63 +63 +63 +63 +63 +63 +7B +7B +EE +00 +00 +00 +00 +ENDCHAR +STARTCHAR ij +ENCODING 307 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +66 +66 +00 +EE +66 +66 +66 +66 +66 +F6 +06 +66 +3C +00 +ENDCHAR +STARTCHAR Jcircumflex +ENCODING 308 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +08 +1C +22 +1E +0C +0C +0C +0C +CC +CC +CC +78 +00 +00 +00 +00 +ENDCHAR +STARTCHAR jcircumflex +ENCODING 309 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +04 +0E +1B +00 +0E +06 +06 +06 +06 +06 +06 +66 +66 +3C +00 +ENDCHAR +STARTCHAR Kcommaaccent +ENCODING 310 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +E6 +66 +66 +6C +78 +78 +6C +66 +66 +E6 +00 +18 +18 +30 +ENDCHAR +STARTCHAR kcommaaccent +ENCODING 311 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +E0 +60 +60 +66 +6C +78 +78 +6C +66 +E6 +00 +18 +18 +30 +ENDCHAR +STARTCHAR kgreenlandic +ENCODING 312 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +E6 +6C +78 +78 +6C +66 +E6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR Lacute +ENCODING 313 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +18 +30 +00 +F0 +60 +60 +60 +60 +60 +62 +66 +FE +00 +00 +00 +00 +ENDCHAR +STARTCHAR lacute +ENCODING 314 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +0C +18 +00 +38 +18 +18 +18 +18 +18 +18 +18 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR Lcommaaccent +ENCODING 315 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +F0 +60 +60 +60 +60 +60 +60 +62 +66 +FE +00 +18 +18 +30 +ENDCHAR +STARTCHAR lcommaaccent +ENCODING 316 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +38 +18 +18 +18 +18 +18 +18 +18 +18 +3C +00 +18 +18 +30 +ENDCHAR +STARTCHAR Lcaron +ENCODING 317 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +6C +38 +10 +F0 +60 +60 +60 +60 +60 +62 +66 +FE +00 +00 +00 +00 +ENDCHAR +STARTCHAR lcaron +ENCODING 318 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +6C +38 +10 +38 +18 +18 +18 +18 +18 +18 +18 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR Ldot +ENCODING 319 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +F0 +60 +60 +60 +66 +66 +60 +62 +66 +FE +00 +00 +00 +00 +ENDCHAR +STARTCHAR ldot +ENCODING 320 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +70 +30 +30 +30 +36 +36 +30 +30 +30 +78 +00 +00 +00 +00 +ENDCHAR +STARTCHAR Lslash +ENCODING 321 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +F0 +60 +60 +60 +78 +E0 +60 +62 +66 +FE +00 +00 +00 +00 +ENDCHAR +STARTCHAR lslash +ENCODING 322 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +38 +18 +18 +18 +1E +78 +18 +18 +18 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR Nacute +ENCODING 323 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +0C +18 +00 +C6 +E6 +F6 +FE +DE +CE +C6 +C6 +C6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR nacute +ENCODING 324 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +0C +18 +00 +DC +66 +66 +66 +66 +66 +66 +00 +00 +00 +00 +ENDCHAR +STARTCHAR Ncommaaccent +ENCODING 325 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +C6 +E6 +F6 +FE +DE +CE +C6 +C6 +C6 +C6 +00 +18 +18 +30 +ENDCHAR +STARTCHAR ncommaaccent +ENCODING 326 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +DC +66 +66 +66 +66 +66 +66 +00 +18 +18 +30 +ENDCHAR +STARTCHAR Ncaron +ENCODING 327 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +6C +38 +10 +C6 +E6 +F6 +FE +DE +CE +C6 +C6 +C6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR ncaron +ENCODING 328 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +6C +38 +10 +00 +DC +66 +66 +66 +66 +66 +66 +00 +00 +00 +00 +ENDCHAR +STARTCHAR napostrophe +ENCODING 329 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +60 +60 +C0 +00 +DC +66 +66 +66 +66 +66 +66 +00 +00 +00 +00 +ENDCHAR +STARTCHAR Eng +ENCODING 330 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +C6 +E6 +F6 +FE +DE +CE +C6 +C6 +C6 +C6 +06 +06 +1C +00 +ENDCHAR +STARTCHAR eng +ENCODING 331 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +DC +66 +66 +66 +66 +66 +66 +06 +06 +1C +00 +ENDCHAR +STARTCHAR Omacron +ENCODING 332 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +7C +00 +7C +C6 +C6 +C6 +C6 +C6 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR omacron +ENCODING 333 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +7C +00 +7C +C6 +C6 +C6 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR Obreve +ENCODING 334 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +6C +38 +00 +7C +C6 +C6 +C6 +C6 +C6 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR obreve +ENCODING 335 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +6C +38 +00 +7C +C6 +C6 +C6 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR Ohungarumlaut +ENCODING 336 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +66 +CC +00 +7C +C6 +C6 +C6 +C6 +C6 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR ohungarumlaut +ENCODING 337 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +66 +CC +00 +7C +C6 +C6 +C6 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR OE +ENCODING 338 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +6E +D8 +D8 +D8 +DE +D8 +D8 +D8 +D8 +6E +00 +00 +00 +00 +ENDCHAR +STARTCHAR oe +ENCODING 339 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +6C +D6 +D6 +DE +D8 +D8 +6E +00 +00 +00 +00 +ENDCHAR +STARTCHAR Racute +ENCODING 340 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +0C +18 +00 +FC +66 +66 +66 +7C +6C +66 +66 +E6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR racute +ENCODING 341 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +0C +18 +00 +DC +76 +66 +60 +60 +60 +F0 +00 +00 +00 +00 +ENDCHAR +STARTCHAR Rcommaaccent +ENCODING 342 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +FC +66 +66 +66 +7C +6C +66 +66 +66 +E6 +00 +18 +18 +30 +ENDCHAR +STARTCHAR rcommaaccent +ENCODING 343 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +DC +76 +66 +60 +60 +60 +F0 +00 +18 +18 +30 +ENDCHAR +STARTCHAR Rcaron +ENCODING 344 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +6C +38 +10 +FC +66 +66 +66 +7C +6C +66 +66 +E6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR rcaron +ENCODING 345 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +6C +38 +10 +00 +DC +76 +66 +60 +60 +60 +F0 +00 +00 +00 +00 +ENDCHAR +STARTCHAR Sacute +ENCODING 346 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +0C +18 +00 +7C +C6 +C6 +60 +38 +0C +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR sacute +ENCODING 347 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +0C +18 +00 +7C +C6 +60 +38 +0C +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR Scircumflex +ENCODING 348 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +10 +38 +44 +7C +C6 +C6 +60 +38 +0C +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR scircumflex +ENCODING 349 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +10 +38 +6C +00 +7C +C6 +60 +38 +0C +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR Scedilla +ENCODING 350 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +7C +C6 +C6 +60 +38 +0C +C6 +C6 +7C +18 +0C +38 +00 +ENDCHAR +STARTCHAR scedilla +ENCODING 351 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +7C +C6 +60 +38 +0C +C6 +7C +18 +0C +38 +00 +ENDCHAR +STARTCHAR Scaron +ENCODING 352 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +6C +38 +10 +7C +C6 +C6 +60 +38 +0C +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR scaron +ENCODING 353 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +6C +38 +10 +00 +7C +C6 +60 +38 +0C +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR Tcommaaccent +ENCODING 354 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +7E +7E +5A +18 +18 +18 +18 +18 +18 +3C +18 +0C +38 +00 +ENDCHAR +STARTCHAR tcommaaccent +ENCODING 355 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +10 +30 +30 +FC +30 +30 +30 +30 +36 +1C +18 +0C +38 +00 +ENDCHAR +STARTCHAR Tcaron +ENCODING 356 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +6C +38 +10 +7E +7E +5A +18 +18 +18 +18 +18 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR tcaron +ENCODING 357 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +6C +38 +10 +10 +30 +FC +30 +30 +30 +30 +36 +1C +00 +00 +00 +00 +ENDCHAR +STARTCHAR Tbar +ENCODING 358 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +7E +7E +5A +18 +18 +3C +18 +18 +18 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR tbar +ENCODING 359 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +10 +30 +30 +FC +30 +FC +30 +30 +36 +1C +00 +00 +00 +00 +ENDCHAR +STARTCHAR Utilde +ENCODING 360 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +76 +DC +00 +C6 +C6 +C6 +C6 +C6 +C6 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR utilde +ENCODING 361 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +76 +DC +00 +CC +CC +CC +CC +CC +CC +76 +00 +00 +00 +00 +ENDCHAR +STARTCHAR Umacron +ENCODING 362 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +7C +00 +C6 +C6 +C6 +C6 +C6 +C6 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR umacron +ENCODING 363 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +78 +00 +CC +CC +CC +CC +CC +CC +76 +00 +00 +00 +00 +ENDCHAR +STARTCHAR Ubreve +ENCODING 364 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +6C +38 +00 +C6 +C6 +C6 +C6 +C6 +C6 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR ubreve +ENCODING 365 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +CC +78 +00 +CC +CC +CC +CC +CC +CC +76 +00 +00 +00 +00 +ENDCHAR +STARTCHAR Uring +ENCODING 366 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +38 +6C +38 +C6 +C6 +C6 +C6 +C6 +C6 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uring +ENCODING 367 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +38 +6C +38 +00 +CC +CC +CC +CC +CC +CC +76 +00 +00 +00 +00 +ENDCHAR +STARTCHAR Uhungarumlaut +ENCODING 368 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +66 +CC +00 +C6 +C6 +C6 +C6 +C6 +C6 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uhungarumlaut +ENCODING 369 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +66 +CC +00 +CC +CC +CC +CC +CC +CC +76 +00 +00 +00 +00 +ENDCHAR +STARTCHAR Uogonek +ENCODING 370 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +C6 +C6 +C6 +C6 +C6 +C6 +C6 +C6 +7C +30 +60 +38 +00 +ENDCHAR +STARTCHAR uogonek +ENCODING 371 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +CC +CC +CC +CC +CC +CC +76 +30 +60 +38 +00 +ENDCHAR +STARTCHAR Wcircumflex +ENCODING 372 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +10 +38 +44 +C6 +C6 +C6 +D6 +D6 +D6 +FE +EE +6C +00 +00 +00 +00 +ENDCHAR +STARTCHAR wcircumflex +ENCODING 373 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +10 +38 +6C +00 +C6 +C6 +D6 +D6 +D6 +FE +6C +00 +00 +00 +00 +ENDCHAR +STARTCHAR Ycircumflex +ENCODING 374 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +10 +38 +44 +66 +66 +66 +3C +18 +18 +18 +18 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR ycircumflex +ENCODING 375 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +10 +38 +6C +00 +C6 +C6 +C6 +C6 +C6 +C6 +7E +06 +0C +F8 +00 +ENDCHAR +STARTCHAR Ydieresis +ENCODING 376 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +66 +66 +00 +66 +66 +66 +3C +18 +18 +18 +18 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR Zacute +ENCODING 377 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +0C +18 +00 +FE +C6 +8C +18 +30 +60 +C2 +C6 +FE +00 +00 +00 +00 +ENDCHAR +STARTCHAR zacute +ENCODING 378 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +0C +18 +00 +FE +CC +18 +30 +60 +C6 +FE +00 +00 +00 +00 +ENDCHAR +STARTCHAR Zdotaccent +ENCODING 379 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +18 +18 +00 +FE +C6 +8C +18 +30 +60 +C2 +C6 +FE +00 +00 +00 +00 +ENDCHAR +STARTCHAR zdotaccent +ENCODING 380 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +18 +18 +00 +FE +CC +18 +30 +60 +C6 +FE +00 +00 +00 +00 +ENDCHAR +STARTCHAR Zcaron +ENCODING 381 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +6C +38 +10 +FE +C6 +8C +18 +30 +60 +C2 +C6 +FE +00 +00 +00 +00 +ENDCHAR +STARTCHAR zcaron +ENCODING 382 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +6C +38 +10 +00 +FE +CC +18 +30 +60 +C6 +FE +00 +00 +00 +00 +ENDCHAR +STARTCHAR longs +ENCODING 383 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +38 +6C +64 +60 +60 +60 +60 +60 +60 +F0 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0180 +ENCODING 384 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +60 +F8 +60 +78 +6C +66 +66 +66 +66 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0181 +ENCODING 385 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +7E +B3 +B3 +33 +3E +33 +33 +33 +33 +7E +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0182 +ENCODING 386 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +FC +64 +60 +60 +7C +66 +66 +66 +66 +FC +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0183 +ENCODING 387 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +7E +62 +60 +78 +6C +66 +66 +66 +66 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0184 +ENCODING 388 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +7C +E6 +E6 +66 +7C +66 +66 +66 +66 +FC +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0185 +ENCODING 389 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +60 +E0 +E0 +78 +6C +66 +66 +66 +66 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0186 +ENCODING 390 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +78 +CC +86 +06 +06 +06 +06 +86 +CC +78 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0187 +ENCODING 391 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +03 +3E +66 +C2 +C0 +C0 +C0 +C0 +C2 +66 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0188 +ENCODING 392 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +03 +7E +C6 +C0 +C0 +C0 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0189 +ENCODING 393 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +F8 +6C +66 +66 +F6 +66 +66 +66 +6C +F8 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni018A +ENCODING 394 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +7C +B6 +B3 +33 +33 +33 +33 +33 +36 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni018B +ENCODING 395 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +7E +4C +0C +0C +7C +CC +CC +CC +CC +7E +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni018C +ENCODING 396 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +7C +4C +0C +3C +6C +CC +CC +CC +CC +76 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni018D +ENCODING 397 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +7C +C6 +C6 +C6 +C6 +7C +30 +18 +CC +78 +00 +ENDCHAR +STARTCHAR uni018E +ENCODING 398 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +FE +CC +8C +2C +3C +2C +0C +8C +CC +FE +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni018F +ENCODING 399 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +7C +C6 +06 +06 +06 +FE +C6 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0190 +ENCODING 400 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +7C +C6 +C2 +C0 +78 +C0 +C0 +C2 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0191 +ENCODING 401 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +FE +66 +62 +68 +78 +68 +60 +60 +60 +60 +60 +60 +C0 +00 +ENDCHAR +STARTCHAR florin +ENCODING 402 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +1C +36 +32 +30 +78 +30 +30 +30 +30 +30 +30 +30 +E0 +00 +ENDCHAR +STARTCHAR uni0193 +ENCODING 403 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +03 +3E +66 +C2 +C0 +C0 +DE +C6 +C6 +66 +3A +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0194 +ENCODING 404 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +C6 +C6 +C6 +6C +6C +6C +38 +38 +10 +38 +6C +38 +00 +00 +ENDCHAR +STARTCHAR uni0195 +ENCODING 405 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +C0 +C0 +C0 +F3 +DB +DB +DB +DB +DB +CE +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0196 +ENCODING 406 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +70 +30 +30 +30 +30 +30 +30 +30 +36 +1C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0197 +ENCODING 407 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +3C +18 +18 +18 +3C +18 +18 +18 +18 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0198 +ENCODING 408 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +E6 +6D +6C +78 +70 +78 +6C +66 +66 +E6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0199 +ENCODING 409 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +38 +6C +60 +66 +6C +78 +78 +6C +66 +E6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni019A +ENCODING 410 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +38 +18 +18 +18 +3C +18 +18 +18 +18 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni019B +ENCODING 411 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +C8 +38 +70 +D0 +38 +38 +6C +64 +C6 +C2 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni019C +ENCODING 412 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +D6 +D6 +D6 +D6 +D6 +D6 +D6 +D6 +FE +EC +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni019D +ENCODING 413 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +66 +66 +76 +7E +7E +6E +66 +66 +66 +66 +60 +60 +C0 +00 +ENDCHAR +STARTCHAR uni019E +ENCODING 414 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +DC +66 +66 +66 +66 +66 +66 +06 +06 +06 +00 +ENDCHAR +STARTCHAR uni019F +ENCODING 415 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +7C +C6 +C6 +C6 +FE +C6 +C6 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR Ohorn +ENCODING 416 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +03 +03 +7A +CC +CC +CC +CC +CC +CC +CC +CC +78 +00 +00 +00 +00 +ENDCHAR +STARTCHAR ohorn +ENCODING 417 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +03 +03 +06 +78 +CC +CC +CC +CC +CC +78 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni01A2 +ENCODING 418 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +73 +DF +DB +DB +DB +DB +DB +DB +DB +73 +03 +03 +03 +00 +ENDCHAR +STARTCHAR uni01A3 +ENCODING 419 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +73 +DF +DB +DB +DB +DB +73 +03 +03 +03 +00 +ENDCHAR +STARTCHAR uni01A4 +ENCODING 420 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +7E +B3 +B3 +33 +3E +30 +30 +30 +30 +78 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni01A5 +ENCODING 421 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +38 +6C +60 +7C +66 +66 +66 +66 +66 +7C +60 +60 +F0 +00 +ENDCHAR +STARTCHAR uni01A6 +ENCODING 422 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +F0 +60 +7C +66 +66 +7C +78 +6C +6C +E6 +06 +00 +00 +00 +ENDCHAR +STARTCHAR uni01A7 +ENCODING 423 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +7C +C6 +C6 +0C +38 +60 +C0 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni01A8 +ENCODING 424 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +7C +C6 +0C +38 +60 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni01A9 +ENCODING 425 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +FE +C6 +62 +30 +18 +18 +30 +62 +C6 +FE +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni01AA +ENCODING 426 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +70 +D8 +78 +18 +18 +18 +18 +18 +18 +18 +18 +1B +0E +00 +ENDCHAR +STARTCHAR uni01AB +ENCODING 427 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +10 +30 +30 +FC +30 +30 +30 +30 +36 +1C +0C +6C +38 +00 +ENDCHAR +STARTCHAR uni01AC +ENCODING 428 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +7E +FE +9A +58 +18 +18 +18 +18 +18 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni01AD +ENCODING 429 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +1C +36 +30 +FC +30 +30 +30 +30 +36 +1C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni01AE +ENCODING 430 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +7E +7E +5A +18 +18 +18 +18 +18 +18 +18 +18 +18 +0E +00 +ENDCHAR +STARTCHAR Uhorn +ENCODING 431 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +03 +03 +CE +CC +CC +CC +CC +CC +CC +CC +CC +78 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uhorn +ENCODING 432 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +03 +03 +06 +CC +CC +CC +CC +CC +CC +76 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni01B1 +ENCODING 433 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +EE +6C +6C +6C +C6 +C6 +C6 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni01B2 +ENCODING 434 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +CC +C6 +C6 +C6 +C6 +C6 +C6 +C6 +CC +78 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni01B3 +ENCODING 435 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +63 +B3 +B3 +33 +1E +0C +0C +0C +0C +1E +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni01B4 +ENCODING 436 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +06 +0D +CC +CC +CC +CC +CC +CC +7C +0C +18 +F0 +00 +ENDCHAR +STARTCHAR uni01B5 +ENCODING 437 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +FE +C6 +86 +0C +7E +30 +60 +C2 +C6 +FE +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni01B6 +ENCODING 438 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +FE +CC +18 +FC +60 +C6 +FE +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni01B7 +ENCODING 439 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +FE +06 +0C +18 +30 +7C +06 +06 +06 +06 +C6 +7C +00 +00 +ENDCHAR +STARTCHAR uni01B8 +ENCODING 440 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +FE +C0 +60 +30 +18 +7C +C0 +C0 +C0 +C0 +C6 +7C +00 +00 +ENDCHAR +STARTCHAR uni01B9 +ENCODING 441 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +FE +C0 +60 +30 +78 +C0 +C0 +C0 +C6 +7C +00 +ENDCHAR +STARTCHAR uni01BA +ENCODING 442 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +FE +06 +0C +18 +3C +06 +7C +C0 +C6 +7C +00 +ENDCHAR +STARTCHAR uni01BB +ENCODING 443 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +7C +C6 +06 +0C +7E +30 +60 +C0 +C6 +FE +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni01BC +ENCODING 444 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +FE +60 +60 +78 +0C +06 +06 +06 +66 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni01BD +ENCODING 445 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +FE +60 +78 +0C +06 +66 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni01BE +ENCODING 446 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +10 +30 +30 +FC +30 +30 +18 +4C +6C +38 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni01BF +ENCODING 447 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +DC +66 +66 +66 +6C +78 +70 +60 +60 +F0 +00 +ENDCHAR +STARTCHAR uni01C0 +ENCODING 448 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +18 +18 +18 +18 +18 +18 +18 +18 +18 +18 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni01C1 +ENCODING 449 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +6C +6C +6C +6C +6C +6C +6C +6C +6C +6C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni01C2 +ENCODING 450 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +18 +18 +18 +7E +18 +7E +18 +18 +18 +18 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni01C3 +ENCODING 451 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +18 +3C +3C +3C +18 +18 +18 +00 +18 +18 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni01C4 +ENCODING 452 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +1B +0E +04 +F7 +D9 +D9 +DA +DA +DA +DC +DC +F7 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni01C5 +ENCODING 453 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +F5 +DA +D8 +DF +D9 +DA +DA +DA +DC +F7 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni01C6 +ENCODING 454 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +3D +1A +18 +7F +D9 +DA +DA +DA +DC +6F +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni01C7 +ENCODING 455 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +C7 +C3 +C3 +C3 +C3 +C3 +C3 +C3 +CB +F6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni01C8 +ENCODING 456 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +F3 +63 +60 +67 +63 +63 +63 +67 +6F +FF +03 +1B +0E +00 +ENDCHAR +STARTCHAR uni01C9 +ENCODING 457 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +E3 +63 +60 +67 +63 +63 +63 +63 +63 +F3 +03 +33 +1E +00 +ENDCHAR +STARTCHAR uni01CA +ENCODING 458 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +DB +DB +FB +FB +FB +DB +DB +DB +DB +DE +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni01CB +ENCODING 459 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +DB +DB +F8 +FF +FB +FB +DB +DB +DB +DB +03 +33 +1E +00 +ENDCHAR +STARTCHAR uni01CC +ENCODING 460 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +03 +03 +00 +B7 +DB +DB +DB +DB +DB +DB +03 +33 +1E +00 +ENDCHAR +STARTCHAR uni01CD +ENCODING 461 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +6C +38 +10 +10 +38 +6C +C6 +C6 +FE +C6 +C6 +C6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni01CE +ENCODING 462 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +6C +38 +10 +00 +78 +0C +7C +CC +CC +CC +76 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni01CF +ENCODING 463 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +6C +38 +10 +3C +18 +18 +18 +18 +18 +18 +18 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni01D0 +ENCODING 464 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +6C +38 +10 +00 +38 +18 +18 +18 +18 +18 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni01D1 +ENCODING 465 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +6C +38 +10 +7C +C6 +C6 +C6 +C6 +C6 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni01D2 +ENCODING 466 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +6C +38 +10 +00 +7C +C6 +C6 +C6 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni01D3 +ENCODING 467 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +6C +38 +10 +C6 +C6 +C6 +C6 +C6 +C6 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni01D4 +ENCODING 468 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +6C +38 +10 +00 +CC +CC +CC +CC +CC +CC +76 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni01D5 +ENCODING 469 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +7C +00 +6C +00 +C6 +C6 +C6 +C6 +C6 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni01D6 +ENCODING 470 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +78 +00 +CC +00 +CC +CC +CC +CC +CC +CC +76 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni01D7 +ENCODING 471 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +08 +10 +6C +00 +C6 +C6 +C6 +C6 +C6 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni01D8 +ENCODING 472 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +18 +30 +00 +CC +00 +CC +CC +CC +CC +CC +CC +76 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni01D9 +ENCODING 473 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +28 +10 +6C +00 +C6 +C6 +C6 +C6 +C6 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni01DA +ENCODING 474 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +78 +30 +00 +CC +00 +CC +CC +CC +CC +CC +CC +76 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni01DB +ENCODING 475 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +20 +10 +6C +00 +C6 +C6 +C6 +C6 +C6 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni01DC +ENCODING 476 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +60 +30 +00 +CC +00 +CC +CC +CC +CC +CC +CC +76 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni01DD +ENCODING 477 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +7C +C6 +06 +06 +FE +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni01DE +ENCODING 478 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +7C +00 +6C +10 +38 +6C +C6 +C6 +FE +C6 +C6 +C6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni01DF +ENCODING 479 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +7C +00 +6C +00 +78 +0C +7C +CC +CC +CC +76 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni01E0 +ENCODING 480 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +7C +30 +30 +10 +38 +6C +C6 +C6 +FE +C6 +C6 +C6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni01E1 +ENCODING 481 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +7C +00 +30 +00 +78 +0C +7C +CC +CC +CC +76 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni01E2 +ENCODING 482 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +7C +00 +3E +6C +CC +CC +FE +CC +CC +CC +CE +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni01E3 +ENCODING 483 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +7C +00 +CC +76 +36 +7E +D8 +D8 +6E +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni01E4 +ENCODING 484 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +3C +66 +C2 +C0 +C0 +DE +C6 +DF +66 +3A +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni01E5 +ENCODING 485 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +76 +CC +CC +CC +CC +7C +0C +3E +CC +78 +00 +ENDCHAR +STARTCHAR Gcaron +ENCODING 486 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +6C +38 +10 +3C +66 +C2 +C0 +DE +C6 +C6 +66 +3A +00 +00 +00 +00 +ENDCHAR +STARTCHAR gcaron +ENCODING 487 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +6C +38 +10 +00 +76 +CC +CC +CC +CC +CC +7C +0C +CC +78 +00 +ENDCHAR +STARTCHAR uni01E8 +ENCODING 488 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +6C +38 +10 +E6 +66 +66 +6C +78 +6C +66 +66 +E6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni01E9 +ENCODING 489 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +6C +38 +10 +E0 +60 +66 +6C +78 +78 +6C +66 +E6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni01EA +ENCODING 490 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +7C +C6 +C6 +C6 +C6 +C6 +C6 +C6 +C6 +7C +30 +60 +38 +00 +ENDCHAR +STARTCHAR uni01EB +ENCODING 491 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +7C +C6 +C6 +C6 +C6 +C6 +7C +30 +60 +38 +00 +ENDCHAR +STARTCHAR uni01EC +ENCODING 492 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +7C +00 +7C +C6 +C6 +C6 +C6 +C6 +C6 +C6 +7C +30 +60 +38 +00 +ENDCHAR +STARTCHAR uni01ED +ENCODING 493 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +7C +00 +7C +C6 +C6 +C6 +C6 +C6 +7C +30 +60 +38 +00 +ENDCHAR +STARTCHAR uni01EE +ENCODING 494 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +6C +38 +10 +FE +0C +18 +30 +7C +06 +06 +06 +06 +C6 +7C +00 +00 +ENDCHAR +STARTCHAR uni01EF +ENCODING 495 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +6C +38 +10 +00 +FE +06 +0C +18 +3C +06 +06 +06 +C6 +7C +00 +ENDCHAR +STARTCHAR uni01F0 +ENCODING 496 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +1B +0E +04 +00 +0E +06 +06 +06 +06 +06 +06 +66 +66 +3C +00 +ENDCHAR +STARTCHAR uni01F1 +ENCODING 497 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +F7 +D9 +D9 +DA +DA +DA +DA +DC +DC +F7 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni01F2 +ENCODING 498 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +F0 +D8 +D8 +DF +D9 +DA +DA +DA +DC +F7 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni01F3 +ENCODING 499 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +38 +18 +18 +7F +D9 +DA +DA +DA +DC +6F +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni01F4 +ENCODING 500 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +0C +18 +00 +3C +66 +C2 +C0 +DE +C6 +C6 +66 +3A +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni01F5 +ENCODING 501 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +18 +30 +00 +76 +CC +CC +CC +CC +CC +7C +0C +CC +78 +00 +ENDCHAR +STARTCHAR uni01F6 +ENCODING 502 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +D8 +D8 +D8 +DB +FB +DB +DB +DB +DB +CE +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni01F7 +ENCODING 503 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +FC +66 +66 +66 +66 +6C +78 +70 +60 +60 +60 +60 +E0 +00 +ENDCHAR +STARTCHAR uni01F8 +ENCODING 504 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +60 +30 +00 +C6 +E6 +F6 +FE +DE +CE +C6 +C6 +C6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni01F9 +ENCODING 505 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +30 +18 +00 +DC +66 +66 +66 +66 +66 +66 +00 +00 +00 +00 +ENDCHAR +STARTCHAR Aringacute +ENCODING 506 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +0C +18 +38 +6C +38 +38 +6C +C6 +C6 +FE +C6 +C6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR aringacute +ENCODING 507 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +0C +18 +38 +6C +38 +78 +0C +7C +CC +CC +CC +76 +00 +00 +00 +00 +ENDCHAR +STARTCHAR AEacute +ENCODING 508 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +0C +18 +00 +3E +6C +CC +CC +FE +CC +CC +CC +CE +00 +00 +00 +00 +ENDCHAR +STARTCHAR aeacute +ENCODING 509 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +0C +18 +00 +CC +76 +36 +7E +D8 +D8 +6E +00 +00 +00 +00 +ENDCHAR +STARTCHAR Oslashacute +ENCODING 510 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +0C +18 +00 +7A +C4 +CE +CE +D6 +E6 +E6 +46 +BC +00 +00 +00 +00 +ENDCHAR +STARTCHAR oslashacute +ENCODING 511 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +0C +18 +00 +7A +C4 +CE +D6 +E6 +46 +BC +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0200 +ENCODING 512 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +CC +66 +00 +10 +38 +6C +C6 +C6 +FE +C6 +C6 +C6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0201 +ENCODING 513 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +CC +66 +00 +78 +0C +7C +CC +CC +CC +76 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0202 +ENCODING 514 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +38 +6C +00 +10 +38 +6C +C6 +C6 +FE +C6 +C6 +C6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0203 +ENCODING 515 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +38 +6C +00 +78 +0C +7C +CC +CC +CC +76 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0204 +ENCODING 516 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +CC +66 +00 +FE +66 +62 +68 +78 +68 +62 +66 +FE +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0205 +ENCODING 517 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +CC +66 +00 +7C +C6 +FE +C0 +C0 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0206 +ENCODING 518 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +38 +6C +00 +FE +66 +62 +68 +78 +68 +62 +66 +FE +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0207 +ENCODING 519 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +38 +6C +00 +7C +C6 +FE +C0 +C0 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0208 +ENCODING 520 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +CC +66 +00 +3C +18 +18 +18 +18 +18 +18 +18 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0209 +ENCODING 521 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +CC +66 +00 +38 +18 +18 +18 +18 +18 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni020A +ENCODING 522 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +3C +66 +00 +3C +18 +18 +18 +18 +18 +18 +18 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni020B +ENCODING 523 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +3C +66 +00 +38 +18 +18 +18 +18 +18 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni020C +ENCODING 524 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +CC +66 +00 +7C +C6 +C6 +C6 +C6 +C6 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni020D +ENCODING 525 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +CC +66 +00 +7C +C6 +C6 +C6 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni020E +ENCODING 526 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +38 +6C +00 +7C +C6 +C6 +C6 +C6 +C6 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni020F +ENCODING 527 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +38 +6C +00 +7C +C6 +C6 +C6 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0210 +ENCODING 528 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +CC +66 +00 +FC +66 +66 +66 +7C +6C +66 +66 +E6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0211 +ENCODING 529 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +CC +66 +00 +DC +76 +66 +60 +60 +60 +F0 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0212 +ENCODING 530 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +38 +6C +00 +FC +66 +66 +66 +7C +6C +66 +66 +E6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0213 +ENCODING 531 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +38 +6C +00 +DC +76 +66 +60 +60 +60 +F0 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0214 +ENCODING 532 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +CC +66 +00 +C6 +C6 +C6 +C6 +C6 +C6 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0215 +ENCODING 533 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +CC +66 +00 +CC +CC +CC +CC +CC +CC +76 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0216 +ENCODING 534 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +38 +6C +00 +C6 +C6 +C6 +C6 +C6 +C6 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0217 +ENCODING 535 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +78 +CC +00 +CC +CC +CC +CC +CC +CC +76 +00 +00 +00 +00 +ENDCHAR +STARTCHAR Scommaaccent +ENCODING 536 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +7C +C6 +C6 +60 +38 +0C +06 +C6 +C6 +7C +00 +18 +18 +30 +ENDCHAR +STARTCHAR scommaaccent +ENCODING 537 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +7C +C6 +60 +38 +0C +C6 +7C +00 +18 +18 +30 +ENDCHAR +STARTCHAR Tcommaaccent +ENCODING 538 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +7E +7E +5A +18 +18 +18 +18 +18 +18 +3C +00 +18 +18 +30 +ENDCHAR +STARTCHAR tcommaaccent +ENCODING 539 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +10 +30 +30 +FC +30 +30 +30 +30 +36 +1C +00 +18 +18 +30 +ENDCHAR +STARTCHAR uni021C +ENCODING 540 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +7C +C6 +86 +06 +1C +74 +06 +06 +06 +06 +1C +F0 +00 +00 +ENDCHAR +STARTCHAR uni021D +ENCODING 541 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +7C +C6 +06 +0E +3C +06 +06 +1C +F0 +00 +00 +ENDCHAR +STARTCHAR uni021E +ENCODING 542 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +6C +38 +10 +C6 +C6 +C6 +C6 +FE +C6 +C6 +C6 +C6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni021F +ENCODING 543 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +6C +38 +10 +E0 +60 +6C +76 +66 +66 +66 +66 +E6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0222 +ENCODING 546 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +6C +C6 +C6 +C6 +7C +C6 +C6 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0223 +ENCODING 547 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +24 +66 +66 +66 +3C +66 +66 +66 +66 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0224 +ENCODING 548 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +FE +C6 +86 +0C +18 +30 +60 +C0 +C0 +FC +06 +0C +00 +00 +ENDCHAR +STARTCHAR uni0225 +ENCODING 549 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +FE +CC +18 +30 +60 +C0 +FC +06 +0C +00 +00 +ENDCHAR +STARTCHAR uni0226 +ENCODING 550 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +30 +30 +00 +10 +38 +6C +C6 +C6 +FE +C6 +C6 +C6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0227 +ENCODING 551 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +30 +30 +00 +78 +0C +7C +CC +CC +CC +76 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0228 +ENCODING 552 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +FE +66 +62 +68 +78 +68 +60 +62 +66 +FE +18 +0C +38 +00 +ENDCHAR +STARTCHAR uni0229 +ENCODING 553 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +7C +C6 +FE +C0 +C0 +C6 +7C +18 +0C +38 +00 +ENDCHAR +STARTCHAR uni022A +ENCODING 554 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +7C +00 +6C +00 +7C +C6 +C6 +C6 +C6 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni022B +ENCODING 555 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +7C +00 +6C +00 +7C +C6 +C6 +C6 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni022C +ENCODING 556 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +7C +00 +72 +9C +7C +C6 +C6 +C6 +C6 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni022D +ENCODING 557 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +7C +00 +76 +DC +00 +7C +C6 +C6 +C6 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni022E +ENCODING 558 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +30 +30 +00 +7C +C6 +C6 +C6 +C6 +C6 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni022F +ENCODING 559 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +30 +30 +00 +7C +C6 +C6 +C6 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0230 +ENCODING 560 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +7C +00 +30 +00 +7C +C6 +C6 +C6 +C6 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0231 +ENCODING 561 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +7C +00 +30 +00 +7C +C6 +C6 +C6 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0232 +ENCODING 562 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +3C +00 +66 +66 +66 +3C +18 +18 +18 +18 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0233 +ENCODING 563 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +7C +00 +C6 +C6 +C6 +C6 +C6 +C6 +7E +06 +0C +F8 +00 +ENDCHAR +STARTCHAR uni0250 +ENCODING 592 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +DC +66 +66 +66 +7C +60 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0251 +ENCODING 593 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +74 +CC +CC +CC +CC +CC +76 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0252 +ENCODING 594 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +DC +66 +66 +66 +66 +66 +5C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0253 +ENCODING 595 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +38 +6C +60 +78 +6C +66 +66 +66 +66 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0254 +ENCODING 596 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +7C +C6 +06 +06 +06 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0255 +ENCODING 597 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +7C +C6 +C0 +C0 +DC +E6 +7C +80 +00 +00 +00 +ENDCHAR +STARTCHAR uni0256 +ENCODING 598 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +1C +0C +0C +3C +6C +CC +CC +CC +CC +7C +0C +0D +06 +00 +ENDCHAR +STARTCHAR uni0257 +ENCODING 599 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +06 +0D +0C +3C +6C +CC +CC +CC +CC +76 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0258 +ENCODING 600 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +7C +C6 +FE +06 +06 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0259 +ENCODING 601 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +7C +C6 +06 +06 +FE +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni025A +ENCODING 602 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +3B +6C +8E +16 +26 +6C +38 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni025B +ENCODING 603 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +7C +C6 +C0 +78 +C0 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni025C +ENCODING 604 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +7C +C6 +06 +3C +06 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni025D +ENCODING 605 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +7A +CD +0D +38 +0C +CC +78 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni025E +ENCODING 606 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +7C +C6 +C6 +DC +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni025F +ENCODING 607 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +0E +06 +06 +1F +06 +06 +06 +66 +66 +3C +00 +ENDCHAR +STARTCHAR uni0260 +ENCODING 608 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +06 +0D +7C +CC +CC +CC +CC +CC +7C +0C +CC +78 +00 +ENDCHAR +STARTCHAR uni0261 +ENCODING 609 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +76 +CC +CC +CC +CC +CC +7C +0C +CC +78 +00 +ENDCHAR +STARTCHAR uni0262 +ENCODING 610 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +7C +C6 +C0 +CE +C6 +C6 +7A +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0263 +ENCODING 611 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +C6 +46 +6C +2C +2C +38 +18 +18 +18 +18 +00 +ENDCHAR +STARTCHAR uni0264 +ENCODING 612 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +C2 +64 +28 +38 +38 +6C +38 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0265 +ENCODING 613 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +CE +CC +CC +CC +CC +DC +6C +0C +0C +0E +00 +ENDCHAR +STARTCHAR uni0266 +ENCODING 614 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +38 +6C +60 +6C +76 +66 +66 +66 +66 +E6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0267 +ENCODING 615 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +38 +6C +60 +6C +76 +66 +66 +66 +66 +E6 +06 +06 +1C +00 +ENDCHAR +STARTCHAR uni0268 +ENCODING 616 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +18 +18 +00 +38 +18 +18 +3C +18 +18 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0269 +ENCODING 617 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +38 +18 +18 +18 +18 +18 +0E +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni026A +ENCODING 618 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +3C +18 +18 +18 +18 +18 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni026B +ENCODING 619 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +38 +18 +18 +18 +7B +DE +18 +18 +18 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni026C +ENCODING 620 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +38 +18 +18 +18 +78 +58 +3E +18 +18 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni026D +ENCODING 621 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +38 +18 +18 +18 +18 +18 +18 +18 +18 +18 +18 +1B +0E +00 +ENDCHAR +STARTCHAR uni026E +ENCODING 622 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +E0 +60 +60 +7F +63 +66 +6C +7E +63 +F3 +03 +33 +1E +00 +ENDCHAR +STARTCHAR uni026F +ENCODING 623 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +C6 +D6 +D6 +D6 +D6 +FE +6E +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0270 +ENCODING 624 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +C6 +D6 +D6 +D6 +D6 +FE +6E +06 +06 +06 +00 +ENDCHAR +STARTCHAR uni0271 +ENCODING 625 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +EC +FE +D6 +D6 +D6 +D6 +C6 +06 +06 +1C +00 +ENDCHAR +STARTCHAR uni0272 +ENCODING 626 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +DC +66 +66 +66 +66 +66 +66 +60 +60 +C0 +00 +ENDCHAR +STARTCHAR uni0273 +ENCODING 627 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +DC +66 +66 +66 +66 +66 +66 +06 +06 +03 +00 +ENDCHAR +STARTCHAR uni0274 +ENCODING 628 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +C6 +E6 +F6 +FE +DE +CE +C6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0275 +ENCODING 629 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +7C +C6 +C6 +FE +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0276 +ENCODING 630 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +6E +D8 +D8 +DE +D8 +D8 +6E +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0277 +ENCODING 631 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +6C +C6 +D6 +D6 +D6 +D6 +6C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0278 +ENCODING 632 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +10 +10 +10 +7C +D6 +D6 +D6 +D6 +D6 +7C +10 +10 +10 +00 +ENDCHAR +STARTCHAR uni0279 +ENCODING 633 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +1E +0C +0C +0C +CC +DC +76 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni027A +ENCODING 634 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +1E +0C +0C +0C +0C +0C +0C +CC +DC +76 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni027B +ENCODING 635 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +1E +0C +0C +0C +CC +DC +6C +0C +0D +06 +00 +ENDCHAR +STARTCHAR uni027C +ENCODING 636 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +DC +76 +66 +60 +60 +60 +60 +60 +60 +F0 +00 +ENDCHAR +STARTCHAR uni027D +ENCODING 637 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +DC +76 +66 +60 +60 +60 +60 +60 +6C +38 +00 +ENDCHAR +STARTCHAR uni027E +ENCODING 638 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +3C +66 +66 +60 +60 +60 +F0 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni027F +ENCODING 639 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +78 +CC +CC +0C +0C +0C +1E +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0280 +ENCODING 640 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +FC +66 +66 +7C +6C +66 +E6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0281 +ENCODING 641 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +E6 +66 +6C +7C +66 +66 +FC +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0282 +ENCODING 642 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +7C +C6 +60 +38 +0C +C6 +FC +C0 +D8 +70 +00 +ENDCHAR +STARTCHAR uni0283 +ENCODING 643 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +0E +1B +19 +18 +18 +18 +18 +18 +18 +18 +98 +D8 +70 +00 +ENDCHAR +STARTCHAR uni0284 +ENCODING 644 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +0E +1B +19 +18 +18 +18 +18 +18 +18 +3C +98 +D8 +70 +00 +ENDCHAR +STARTCHAR uni0285 +ENCODING 645 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +70 +D8 +18 +18 +18 +18 +1B +0E +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0286 +ENCODING 646 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +0E +1B +18 +18 +18 +18 +18 +18 +7E +D8 +70 +00 +ENDCHAR +STARTCHAR uni0287 +ENCODING 647 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +70 +D8 +18 +18 +18 +18 +7E +18 +18 +10 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0288 +ENCODING 648 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +10 +30 +30 +FC +30 +30 +30 +30 +30 +30 +30 +36 +1C +00 +ENDCHAR +STARTCHAR uni0289 +ENCODING 649 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +66 +66 +66 +FF +66 +66 +3B +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni028A +ENCODING 650 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +EE +6C +6C +C6 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni028B +ENCODING 651 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +CC +C6 +C6 +C6 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni028C +ENCODING 652 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +18 +3C +66 +66 +66 +66 +66 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni028D +ENCODING 653 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +6C +FE +D6 +D6 +D6 +C6 +C6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni028E +ENCODING 654 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +3E +60 +C0 +FC +C6 +C6 +C6 +C6 +C6 +C6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni028F +ENCODING 655 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +66 +66 +66 +3C +18 +18 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0290 +ENCODING 656 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +FE +CC +18 +30 +60 +C6 +FE +06 +06 +03 +00 +ENDCHAR +STARTCHAR uni0291 +ENCODING 657 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +FE +CC +18 +30 +66 +CB +FE +10 +00 +00 +00 +ENDCHAR +STARTCHAR uni0292 +ENCODING 658 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +FE +06 +0C +18 +3C +06 +06 +06 +C6 +7C +00 +ENDCHAR +STARTCHAR uni0293 +ENCODING 659 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +FE +06 +0C +18 +3C +06 +06 +7E +C7 +7C +00 +ENDCHAR +STARTCHAR uni0294 +ENCODING 660 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +7C +C6 +C6 +06 +1C +18 +18 +18 +18 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0295 +ENCODING 661 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +7C +C6 +C6 +C0 +70 +30 +30 +30 +30 +78 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0296 +ENCODING 662 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +3C +18 +18 +18 +18 +1C +06 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0297 +ENCODING 663 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +7C +C6 +C0 +C0 +C0 +C0 +C0 +C0 +C6 +7C +00 +ENDCHAR +STARTCHAR uni0298 +ENCODING 664 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +3C +66 +C3 +C3 +DB +DB +C3 +C3 +66 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0299 +ENCODING 665 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +FC +66 +66 +7C +66 +66 +FC +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni029A +ENCODING 666 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +7C +C6 +C6 +76 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni029B +ENCODING 667 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +03 +7E +C6 +C0 +CE +C6 +C6 +7A +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni029C +ENCODING 668 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +C6 +C6 +C6 +FE +C6 +C6 +C6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR j +ENCODING 669 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +0C +0C +00 +1C +0C +0C +0C +0C +0C +0C +7E +CC +78 +00 +ENDCHAR +STARTCHAR uni029D +ENCODING 670 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +CE +CC +6C +3C +3C +6C +CC +0C +0C +0E +00 +ENDCHAR +STARTCHAR uni029E +ENCODING 671 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +F0 +60 +60 +60 +62 +66 +FE +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni029F +ENCODING 672 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +06 +0D +7C +CC +CC +CC +CC +CC +7C +0C +0C +1E +00 +ENDCHAR +STARTCHAR uni02A0 +ENCODING 673 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +7C +C6 +C6 +06 +1C +18 +7E +18 +18 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni02A1 +ENCODING 674 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +7C +C6 +C6 +C0 +70 +30 +FC +30 +30 +78 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni02A2 +ENCODING 675 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +38 +18 +18 +7F +D9 +DA +DA +DA +DC +6F +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni02A3 +ENCODING 676 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +38 +18 +18 +7F +DB +DB +DE +DE +DB +6B +03 +1B +0E +00 +ENDCHAR +STARTCHAR uni02A4 +ENCODING 677 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +38 +18 +18 +7F +D9 +DA +DA +DB +DD +6F +04 +00 +00 +00 +ENDCHAR +STARTCHAR uni02A5 +ENCODING 678 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +20 +60 +60 +F6 +6D +6C +66 +63 +6B +36 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni02A6 +ENCODING 679 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +26 +6D +6C +FC +6C +6C +6C +6C +6C +3C +0C +2C +18 +00 +ENDCHAR +STARTCHAR uni02A7 +ENCODING 680 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +20 +60 +60 +F6 +6D +6C +6C +6E +6D +36 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni02A8 +ENCODING 681 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +70 +D8 +C0 +FE +DB +DB +DB +DB +DB +DB +03 +03 +0E +00 +ENDCHAR +STARTCHAR uni02A9 +ENCODING 682 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +E0 +60 +60 +66 +6D +6C +66 +63 +6B +F6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni02AA +ENCODING 683 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +E0 +60 +60 +6F +6B +63 +66 +6C +6D +FF +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni02AB +ENCODING 684 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +C6 +D6 +7C +6C +28 +C6 +D6 +7C +6C +28 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni02AC +ENCODING 685 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +FE +C6 +C6 +C6 +00 +00 +FE +C6 +C6 +C6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni02B0 +ENCODING 688 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +C0 +C0 +F0 +D8 +D8 +D8 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni02B1 +ENCODING 689 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +70 +C0 +F0 +D8 +D8 +D8 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni02B2 +ENCODING 690 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +18 +00 +38 +18 +18 +D8 +70 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni02B3 +ENCODING 691 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +B0 +D8 +C0 +C0 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni02B4 +ENCODING 692 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +18 +18 +D8 +68 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni02B5 +ENCODING 693 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +18 +18 +D8 +68 +0C +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni02B6 +ENCODING 694 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +D8 +D8 +F0 +D8 +D8 +F0 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni02B7 +ENCODING 695 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +C6 +D6 +7C +6C +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni02B8 +ENCODING 696 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +D8 +D8 +78 +18 +70 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni02B9 +ENCODING 697 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +18 +30 +60 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni02BA +ENCODING 698 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +36 +6C +D8 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni02BB +ENCODING 699 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +18 +30 +30 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii57929 +ENCODING 700 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +18 +18 +30 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii64937 +ENCODING 701 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +30 +30 +18 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni02BE +ENCODING 702 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +18 +0C +18 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni02BF +ENCODING 703 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +30 +60 +30 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni02C0 +ENCODING 704 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +70 +D8 +18 +30 +30 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni02C1 +ENCODING 705 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +70 +D8 +C0 +60 +60 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni02C2 +ENCODING 706 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +18 +70 +C0 +70 +18 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni02C3 +ENCODING 707 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +C0 +70 +18 +70 +C0 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni02C4 +ENCODING 708 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +20 +20 +70 +70 +D8 +D8 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni02C5 +ENCODING 709 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +D8 +D8 +70 +70 +20 +20 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR circumflex +ENCODING 710 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +10 +38 +6C +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR caron +ENCODING 711 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +6C +38 +10 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni02C8 +ENCODING 712 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +18 +18 +18 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR macron +ENCODING 713 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +7C +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni02CA +ENCODING 714 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +0C +18 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni02CB +ENCODING 715 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +60 +30 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni02CC +ENCODING 716 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +18 +18 +18 +00 +ENDCHAR +STARTCHAR uni02CD +ENCODING 717 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +7C +00 +00 +ENDCHAR +STARTCHAR uni02CE +ENCODING 718 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +18 +0C +00 +ENDCHAR +STARTCHAR uni02CF +ENCODING 719 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +30 +60 +00 +ENDCHAR +STARTCHAR breve +ENCODING 728 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +6C +38 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR dotaccent +ENCODING 729 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +18 +18 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR ring +ENCODING 730 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +38 +6C +38 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR ogonek +ENCODING 731 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +18 +30 +1C +00 +ENDCHAR +STARTCHAR tilde +ENCODING 732 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +76 +DC +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR hungarumlaut +ENCODING 733 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +66 +CC +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni02EE +ENCODING 750 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +6C +6C +6C +48 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR gravecomb +ENCODING 768 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +60 +30 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR acutecomb +ENCODING 769 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +0C +18 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR tildecomb +ENCODING 771 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +34 +58 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR hookabovecomb +ENCODING 777 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +70 +18 +30 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0312 +ENCODING 786 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +18 +30 +30 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0313 +ENCODING 787 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +18 +18 +30 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0314 +ENCODING 788 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +30 +30 +18 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR dotbelowcomb +ENCODING 803 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +18 +18 +00 +ENDCHAR +STARTCHAR uni0340 +ENCODING 832 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +C0 +60 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0341 +ENCODING 833 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +03 +06 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0374 +ENCODING 884 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +30 +20 +40 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0375 +ENCODING 885 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +10 +20 +60 +00 +00 +00 +ENDCHAR +STARTCHAR uni037A +ENCODING 890 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +30 +34 +18 +00 +ENDCHAR +STARTCHAR uni037E +ENCODING 894 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +18 +18 +00 +00 +00 +18 +18 +30 +00 +00 +00 +00 +ENDCHAR +STARTCHAR tonos +ENCODING 900 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +60 +C0 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR dieresistonos +ENCODING 901 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +0C +18 +00 +6C +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR Alphatonos +ENCODING 902 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +60 +C0 +10 +38 +6C +C6 +C6 +FE +C6 +C6 +C6 +C6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR anoteleia +ENCODING 903 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +18 +18 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR Epsilontonos +ENCODING 904 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +60 +C0 +3E +32 +30 +34 +3C +34 +30 +30 +32 +3E +00 +00 +00 +00 +ENDCHAR +STARTCHAR Etatonos +ENCODING 905 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +60 +C0 +33 +33 +33 +33 +3F +33 +33 +33 +33 +33 +00 +00 +00 +00 +ENDCHAR +STARTCHAR Iotatonos +ENCODING 906 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +60 +C0 +3C +18 +18 +18 +18 +18 +18 +18 +18 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR Omicrontonos +ENCODING 908 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +60 +C0 +3C +66 +66 +66 +66 +66 +66 +66 +66 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR Upsilontonos +ENCODING 910 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +60 +C0 +66 +66 +66 +66 +3C +18 +18 +18 +18 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR Omegatonos +ENCODING 911 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +60 +C0 +3E +63 +63 +63 +63 +63 +36 +36 +36 +77 +00 +00 +00 +00 +ENDCHAR +STARTCHAR iotadieresistonos +ENCODING 912 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +0C +18 +00 +6C +00 +38 +18 +18 +18 +18 +18 +0E +00 +00 +00 +00 +ENDCHAR +STARTCHAR Alpha +ENCODING 913 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +10 +38 +6C +C6 +C6 +FE +C6 +C6 +C6 +C6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR Beta +ENCODING 914 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +FC +66 +66 +66 +7C +66 +66 +66 +66 +FC +00 +00 +00 +00 +ENDCHAR +STARTCHAR Gamma +ENCODING 915 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +FE +66 +62 +60 +60 +60 +60 +60 +60 +F0 +00 +00 +00 +00 +ENDCHAR +STARTCHAR Delta +ENCODING 916 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +10 +10 +38 +38 +6C +6C +C6 +C6 +C6 +FE +00 +00 +00 +00 +ENDCHAR +STARTCHAR Epsilon +ENCODING 917 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +FE +66 +62 +68 +78 +68 +60 +62 +66 +FE +00 +00 +00 +00 +ENDCHAR +STARTCHAR Zeta +ENCODING 918 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +FE +C6 +86 +0C +18 +30 +60 +C2 +C6 +FE +00 +00 +00 +00 +ENDCHAR +STARTCHAR Eta +ENCODING 919 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +C6 +C6 +C6 +C6 +FE +C6 +C6 +C6 +C6 +C6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR Theta +ENCODING 920 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +7C +C6 +C6 +C6 +FE +C6 +C6 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR Iota +ENCODING 921 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +3C +18 +18 +18 +18 +18 +18 +18 +18 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR Kappa +ENCODING 922 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +E6 +66 +66 +6C +78 +78 +6C +66 +66 +E6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR Lambda +ENCODING 923 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +10 +10 +38 +38 +6C +6C +C6 +C6 +C6 +C6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR Mu +ENCODING 924 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +C6 +EE +FE +FE +D6 +C6 +C6 +C6 +C6 +C6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR Nu +ENCODING 925 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +C6 +E6 +F6 +FE +DE +CE +C6 +C6 +C6 +C6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR Xi +ENCODING 926 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +FE +C6 +82 +44 +7C +44 +00 +82 +C6 +FE +00 +00 +00 +00 +ENDCHAR +STARTCHAR Omicron +ENCODING 927 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +7C +C6 +C6 +C6 +C6 +C6 +C6 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR Pi +ENCODING 928 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +FE +C6 +C6 +C6 +C6 +C6 +C6 +C6 +C6 +C6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR Rho +ENCODING 929 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +FC +66 +66 +66 +7C +60 +60 +60 +60 +F0 +00 +00 +00 +00 +ENDCHAR +STARTCHAR Sigma +ENCODING 931 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +FE +C6 +62 +30 +18 +18 +30 +62 +C6 +FE +00 +00 +00 +00 +ENDCHAR +STARTCHAR Tau +ENCODING 932 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +7E +7E +5A +18 +18 +18 +18 +18 +18 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR Upsilon +ENCODING 933 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +66 +66 +66 +66 +3C +18 +18 +18 +18 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR Phi +ENCODING 934 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +10 +7C +D6 +D6 +D6 +D6 +D6 +7C +10 +10 +00 +00 +00 +00 +ENDCHAR +STARTCHAR Chi +ENCODING 935 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +C6 +C6 +6C +7C +38 +38 +7C +6C +C6 +C6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR Psi +ENCODING 936 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +10 +92 +D6 +D6 +D6 +D6 +D6 +7C +10 +10 +00 +00 +00 +00 +ENDCHAR +STARTCHAR Omega +ENCODING 937 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +7C +C6 +C6 +C6 +C6 +C6 +6C +6C +6C +EE +00 +00 +00 +00 +ENDCHAR +STARTCHAR Iotadieresis +ENCODING 938 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +66 +66 +00 +3C +18 +18 +18 +18 +18 +18 +18 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR Upsilondieresis +ENCODING 939 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +66 +66 +00 +66 +66 +66 +3C +18 +18 +18 +18 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR alphatonos +ENCODING 940 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +0C +18 +00 +76 +CC +CC +CC +CC +CC +76 +00 +00 +00 +00 +ENDCHAR +STARTCHAR epsilontonos +ENCODING 941 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +0C +18 +00 +7C +C6 +C0 +78 +C0 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR etatonos +ENCODING 942 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +0C +18 +00 +DC +66 +66 +66 +66 +66 +66 +06 +06 +06 +00 +ENDCHAR +STARTCHAR iotatonos +ENCODING 943 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +0C +18 +00 +38 +18 +18 +18 +18 +18 +0E +00 +00 +00 +00 +ENDCHAR +STARTCHAR upsilondieresistonos +ENCODING 944 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +0C +18 +00 +6C +00 +CC +C6 +C6 +C6 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR alpha +ENCODING 945 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +76 +CC +CC +CC +CC +CC +76 +00 +00 +00 +00 +ENDCHAR +STARTCHAR beta +ENCODING 946 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +3C +66 +66 +66 +6C +66 +66 +66 +66 +6C +60 +60 +60 +00 +ENDCHAR +STARTCHAR gamma +ENCODING 947 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +C6 +46 +6C +2C +2C +38 +18 +18 +18 +18 +00 +ENDCHAR +STARTCHAR delta +ENCODING 948 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +3C +66 +30 +18 +7C +C6 +C6 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR epsilon +ENCODING 949 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +7C +C6 +C0 +78 +C0 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR zeta +ENCODING 950 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +46 +7C +18 +30 +60 +60 +C0 +C0 +C0 +7C +06 +06 +1C +00 +ENDCHAR +STARTCHAR eta +ENCODING 951 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +DC +66 +66 +66 +66 +66 +66 +06 +06 +06 +00 +ENDCHAR +STARTCHAR theta +ENCODING 952 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +3C +66 +66 +66 +7E +66 +66 +66 +66 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR iota +ENCODING 953 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +38 +18 +18 +18 +18 +18 +0E +00 +00 +00 +00 +ENDCHAR +STARTCHAR kappa +ENCODING 954 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +E6 +6C +78 +78 +6C +66 +E6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR lambda +ENCODING 955 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +C0 +20 +30 +10 +38 +38 +6C +64 +C6 +C2 +00 +00 +00 +00 +ENDCHAR +STARTCHAR mu +ENCODING 956 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +CC +CC +CC +CC +CC +CC +F6 +C0 +C0 +C0 +00 +ENDCHAR +STARTCHAR nu +ENCODING 957 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +C6 +C6 +66 +6C +3C +38 +10 +00 +00 +00 +00 +ENDCHAR +STARTCHAR xi +ENCODING 958 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +66 +3C +30 +60 +3C +60 +C0 +C0 +C0 +7C +06 +06 +1C +00 +ENDCHAR +STARTCHAR omicron +ENCODING 959 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +7C +C6 +C6 +C6 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR pi +ENCODING 960 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +FE +6C +6C +6C +6C +6C +66 +00 +00 +00 +00 +ENDCHAR +STARTCHAR rho +ENCODING 961 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +3C +66 +66 +66 +66 +66 +7C +60 +60 +60 +00 +ENDCHAR +STARTCHAR sigma1 +ENCODING 962 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +7C +C6 +C0 +C0 +C0 +7C +06 +06 +1C +00 +00 +ENDCHAR +STARTCHAR sigma +ENCODING 963 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +7E +CC +CC +CC +CC +CC +78 +00 +00 +00 +00 +ENDCHAR +STARTCHAR tau +ENCODING 964 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +7E +18 +18 +18 +18 +18 +0E +00 +00 +00 +00 +ENDCHAR +STARTCHAR upsilon +ENCODING 965 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +CC +C6 +C6 +C6 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR phi +ENCODING 966 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +6C +D6 +D6 +D6 +D6 +D6 +7C +10 +10 +10 +00 +ENDCHAR +STARTCHAR chi +ENCODING 967 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +86 +46 +2C +2C +18 +30 +68 +68 +C4 +C2 +00 +ENDCHAR +STARTCHAR psi +ENCODING 968 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +92 +D6 +D6 +D6 +D6 +D6 +7C +10 +10 +10 +00 +ENDCHAR +STARTCHAR omega +ENCODING 969 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +6C +C6 +D6 +D6 +D6 +D6 +6C +00 +00 +00 +00 +ENDCHAR +STARTCHAR iotadieresis +ENCODING 970 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +66 +66 +00 +38 +18 +18 +18 +18 +18 +0E +00 +00 +00 +00 +ENDCHAR +STARTCHAR upsilondieresis +ENCODING 971 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +6C +6C +00 +CC +C6 +C6 +C6 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR omicrontonos +ENCODING 972 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +0C +18 +00 +7C +C6 +C6 +C6 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR upsilontonos +ENCODING 973 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +0C +18 +00 +CC +C6 +C6 +C6 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR omegatonos +ENCODING 974 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +0C +18 +00 +6C +C6 +D6 +D6 +D6 +D6 +6C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni03D0 +ENCODING 976 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +3C +66 +66 +6C +7C +66 +66 +66 +66 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR theta1 +ENCODING 977 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +3C +66 +66 +36 +1E +C6 +66 +66 +66 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR Upsilon1 +ENCODING 978 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +C2 +65 +24 +38 +18 +18 +18 +18 +18 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni03D3 +ENCODING 979 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +60 +C0 +21 +32 +12 +1C +0C +0C +0C +0C +0C +1E +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni03D4 +ENCODING 980 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +6C +6C +00 +C2 +65 +24 +38 +18 +18 +18 +18 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR phi1 +ENCODING 981 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +10 +10 +10 +7C +D6 +D6 +D6 +D6 +D6 +7C +10 +10 +10 +00 +ENDCHAR +STARTCHAR omega1 +ENCODING 982 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +FE +6C +C6 +D6 +D6 +D6 +6C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni03D7 +ENCODING 983 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +46 +A6 +2C +38 +68 +CA +C4 +0C +18 +00 +00 +ENDCHAR +STARTCHAR uni03DA +ENCODING 986 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +3C +66 +C2 +C0 +C0 +C0 +C0 +60 +3C +06 +06 +1C +00 +00 +ENDCHAR +STARTCHAR uni03DB +ENCODING 987 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +7E +C0 +C0 +C0 +C0 +C0 +7C +06 +06 +1C +00 +ENDCHAR +STARTCHAR uni03DC +ENCODING 988 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +FE +66 +62 +60 +78 +68 +60 +60 +60 +F0 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni03DD +ENCODING 989 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +7E +32 +30 +30 +3C +34 +30 +30 +30 +30 +00 +ENDCHAR +STARTCHAR uni03DE +ENCODING 990 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +60 +30 +30 +60 +63 +FF +C6 +06 +0C +0C +06 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni03DF +ENCODING 991 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +30 +30 +60 +60 +FE +FE +0C +0C +18 +18 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni03E0 +ENCODING 992 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +78 +AC +26 +26 +0B +0B +1B +1B +1B +1B +03 +02 +04 +00 +ENDCHAR +STARTCHAR uni03E1 +ENCODING 993 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +C0 +60 +30 +18 +28 +4C +14 +24 +06 +02 +02 +00 +ENDCHAR +STARTCHAR uni03E2 +ENCODING 994 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +DB +DB +DB +DB +DB +DB +DB +DB +DB +6D +03 +3E +00 +00 +ENDCHAR +STARTCHAR uni03E3 +ENCODING 995 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +DB +DB +DB +DB +DB +DB +6D +03 +7E +00 +00 +ENDCHAR +STARTCHAR uni03E4 +ENCODING 996 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +76 +D6 +C6 +C6 +C6 +7E +06 +06 +06 +06 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni03E5 +ENCODING 997 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +36 +66 +66 +66 +66 +3E +06 +06 +06 +06 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni03E6 +ENCODING 998 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +C0 +C0 +C0 +C0 +FC +C6 +C6 +C6 +C6 +C6 +06 +76 +9C +00 +ENDCHAR +STARTCHAR uni03E7 +ENCODING 999 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +08 +7C +D6 +66 +06 +06 +66 +BC +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni03E8 +ENCODING 1000 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +7C +C6 +C6 +06 +3C +60 +C6 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni03E9 +ENCODING 1001 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +3C +66 +66 +26 +1C +70 +C0 +C2 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni03EA +ENCODING 1002 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +C6 +68 +38 +30 +38 +38 +4C +4C +86 +FE +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni03EB +ENCODING 1003 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +64 +BA +30 +38 +28 +4C +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni03EC +ENCODING 1004 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +7E +C0 +CC +D6 +C6 +C6 +C6 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni03ED +ENCODING 1005 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +7E +C0 +DC +C6 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni03EE +ENCODING 1006 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +3C +18 +7E +99 +18 +18 +18 +18 +18 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni03EF +ENCODING 1007 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +18 +1C +18 +7E +58 +18 +18 +18 +38 +18 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni03F0 +ENCODING 1008 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +46 +A6 +2C +38 +68 +CA +C4 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni03F1 +ENCODING 1009 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +7C +C6 +C6 +C6 +C6 +FC +C0 +60 +3C +06 +00 +ENDCHAR +STARTCHAR uni03F2 +ENCODING 1010 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +7C +C6 +C0 +C0 +C0 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni03F3 +ENCODING 1011 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +06 +06 +00 +0E +06 +06 +06 +06 +06 +06 +66 +66 +3C +00 +ENDCHAR +STARTCHAR uni0400 +ENCODING 1024 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +30 +18 +00 +FE +66 +62 +68 +78 +68 +62 +66 +FE +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii10023 +ENCODING 1025 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +6C +6C +00 +FE +66 +62 +68 +78 +68 +62 +66 +FE +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii10051 +ENCODING 1026 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +FE +B2 +30 +3E +33 +33 +33 +33 +33 +33 +03 +06 +00 +00 +ENDCHAR +STARTCHAR afii10052 +ENCODING 1027 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +0C +18 +00 +FE +66 +62 +60 +60 +60 +60 +60 +F0 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii10053 +ENCODING 1028 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +3C +66 +C2 +C0 +F8 +C0 +C0 +C2 +66 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii10054 +ENCODING 1029 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +7C +C6 +C6 +60 +38 +0C +06 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii10055 +ENCODING 1030 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +3C +18 +18 +18 +18 +18 +18 +18 +18 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii10056 +ENCODING 1031 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +66 +66 +00 +3C +18 +18 +18 +18 +18 +18 +18 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii10057 +ENCODING 1032 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +1E +0C +0C +0C +0C +0C +CC +CC +CC +78 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii10058 +ENCODING 1033 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +78 +D8 +D8 +D8 +DE +DB +DB +DB +DB +DE +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii10059 +ENCODING 1034 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +D8 +D8 +D8 +D8 +FE +DB +DB +DB +DB +DE +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii10060 +ENCODING 1035 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +FE +B2 +30 +3E +33 +33 +33 +33 +33 +33 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii10061 +ENCODING 1036 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +0C +18 +00 +E6 +66 +66 +6C +78 +6C +66 +66 +E6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni040D +ENCODING 1037 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +30 +18 +00 +C6 +C6 +CE +DE +FE +F6 +E6 +C6 +C6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii10062 +ENCODING 1038 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +6C +38 +00 +C6 +C6 +C6 +C6 +7E +06 +06 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii10145 +ENCODING 1039 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +C6 +C6 +C6 +C6 +C6 +C6 +C6 +C6 +C6 +FE +38 +10 +10 +00 +ENDCHAR +STARTCHAR afii10017 +ENCODING 1040 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +10 +38 +6C +C6 +C6 +FE +C6 +C6 +C6 +C6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii10018 +ENCODING 1041 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +FE +66 +62 +60 +7C +66 +66 +66 +66 +FC +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii10019 +ENCODING 1042 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +FC +66 +66 +66 +7C +66 +66 +66 +66 +FC +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii10020 +ENCODING 1043 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +FE +66 +62 +60 +60 +60 +60 +60 +60 +F0 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii10021 +ENCODING 1044 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +3C +6C +6C +6C +6C +6C +6C +6C +6C +FE +C6 +82 +00 +00 +ENDCHAR +STARTCHAR afii10022 +ENCODING 1045 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +FE +66 +62 +68 +78 +68 +60 +62 +66 +FE +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii10024 +ENCODING 1046 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +D6 +D6 +D6 +7C +38 +7C +D6 +D6 +D6 +D6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii10025 +ENCODING 1047 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +7C +C6 +86 +06 +3C +06 +06 +86 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii10026 +ENCODING 1048 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +C6 +C6 +C6 +CE +DE +FE +F6 +E6 +C6 +C6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii10027 +ENCODING 1049 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +6C +38 +C6 +C6 +C6 +CE +DE +FE +F6 +E6 +C6 +C6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii10028 +ENCODING 1050 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +E6 +66 +66 +6C +78 +78 +6C +66 +66 +E6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii10029 +ENCODING 1051 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +3E +66 +66 +66 +66 +66 +66 +66 +66 +C6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii10030 +ENCODING 1052 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +C6 +EE +FE +FE +D6 +C6 +C6 +C6 +C6 +C6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii10031 +ENCODING 1053 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +C6 +C6 +C6 +C6 +FE +C6 +C6 +C6 +C6 +C6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii10032 +ENCODING 1054 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +7C +C6 +C6 +C6 +C6 +C6 +C6 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii10033 +ENCODING 1055 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +FE +C6 +C6 +C6 +C6 +C6 +C6 +C6 +C6 +C6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii10034 +ENCODING 1056 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +FC +66 +66 +66 +7C +60 +60 +60 +60 +F0 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii10035 +ENCODING 1057 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +3C +66 +C2 +C0 +C0 +C0 +C0 +C2 +66 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii10036 +ENCODING 1058 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +7E +7E +5A +18 +18 +18 +18 +18 +18 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii10037 +ENCODING 1059 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +C6 +C6 +C6 +C6 +C6 +7E +06 +06 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii10038 +ENCODING 1060 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +10 +7C +D6 +D6 +D6 +D6 +D6 +7C +10 +10 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii10039 +ENCODING 1061 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +C6 +C6 +6C +7C +38 +38 +7C +6C +C6 +C6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii10040 +ENCODING 1062 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +CC +CC +CC +CC +CC +CC +CC +CC +CC +FE +06 +02 +00 +00 +ENDCHAR +STARTCHAR afii10041 +ENCODING 1063 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +C6 +C6 +C6 +C6 +C6 +7E +06 +06 +06 +06 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii10042 +ENCODING 1064 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +C6 +D6 +D6 +D6 +D6 +D6 +D6 +D6 +D6 +FE +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii10043 +ENCODING 1065 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +C6 +D6 +D6 +D6 +D6 +D6 +D6 +D6 +D6 +FF +03 +01 +00 +00 +ENDCHAR +STARTCHAR afii10044 +ENCODING 1066 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +F8 +B0 +B0 +30 +3C +36 +36 +36 +36 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii10045 +ENCODING 1067 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +C3 +C3 +C3 +C3 +F3 +DB +DB +DB +DB +F3 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii10046 +ENCODING 1068 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +F0 +60 +60 +60 +7C +66 +66 +66 +66 +FC +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii10047 +ENCODING 1069 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +78 +CC +86 +06 +3E +06 +06 +86 +CC +78 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii10048 +ENCODING 1070 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +9C +B6 +B6 +B6 +F6 +B6 +B6 +B6 +B6 +9C +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii10049 +ENCODING 1071 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +7E +CC +CC +CC +7C +6C +6C +6C +6C +CE +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii10065 +ENCODING 1072 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +78 +0C +7C +CC +CC +CC +76 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii10066 +ENCODING 1073 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +06 +7C +C0 +C0 +FC +C6 +C6 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii10067 +ENCODING 1074 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +FC +66 +66 +7C +66 +66 +FC +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii10068 +ENCODING 1075 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +FE +66 +62 +60 +60 +60 +F0 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii10069 +ENCODING 1076 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +3C +6C +6C +6C +6C +6C +FE +C6 +82 +00 +00 +ENDCHAR +STARTCHAR afii10070 +ENCODING 1077 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +7C +C6 +FE +C0 +C0 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii10072 +ENCODING 1078 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +D6 +D6 +D6 +7C +D6 +D6 +D6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii10073 +ENCODING 1079 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +7C +C6 +06 +3C +06 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii10074 +ENCODING 1080 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +C6 +CE +DE +FE +F6 +E6 +C6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii10075 +ENCODING 1081 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +6C +38 +00 +C6 +CE +DE +FE +F6 +E6 +C6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii10076 +ENCODING 1082 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +E6 +6C +78 +78 +6C +66 +E6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii10077 +ENCODING 1083 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +3E +66 +66 +66 +66 +66 +C6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii10078 +ENCODING 1084 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +C6 +EE +FE +FE +D6 +C6 +C6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii10079 +ENCODING 1085 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +C6 +C6 +C6 +FE +C6 +C6 +C6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii10080 +ENCODING 1086 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +7C +C6 +C6 +C6 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii10081 +ENCODING 1087 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +FE +C6 +C6 +C6 +C6 +C6 +C6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii10082 +ENCODING 1088 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +DC +66 +66 +66 +66 +66 +7C +60 +60 +F0 +00 +ENDCHAR +STARTCHAR afii10083 +ENCODING 1089 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +7C +C6 +C0 +C0 +C0 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii10084 +ENCODING 1090 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +7E +5A +18 +18 +18 +18 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii10085 +ENCODING 1091 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +C6 +C6 +C6 +C6 +C6 +C6 +7E +06 +0C +F8 +00 +ENDCHAR +STARTCHAR afii10086 +ENCODING 1092 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +10 +7C +D6 +D6 +D6 +D6 +D6 +7C +10 +10 +10 +00 +ENDCHAR +STARTCHAR afii10087 +ENCODING 1093 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +C6 +6C +38 +38 +38 +6C +C6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii10088 +ENCODING 1094 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +CC +CC +CC +CC +CC +CC +FE +06 +02 +00 +00 +ENDCHAR +STARTCHAR afii10089 +ENCODING 1095 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +C6 +C6 +C6 +7E +06 +06 +06 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii10090 +ENCODING 1096 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +C6 +D6 +D6 +D6 +D6 +D6 +FE +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii10091 +ENCODING 1097 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +C6 +D6 +D6 +D6 +D6 +D6 +FF +03 +01 +00 +00 +ENDCHAR +STARTCHAR afii10092 +ENCODING 1098 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +F8 +B0 +30 +3C +36 +36 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii10093 +ENCODING 1099 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +C3 +C3 +C3 +F3 +DB +DB +F3 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii10094 +ENCODING 1100 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +F0 +60 +60 +7C +66 +66 +FC +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii10095 +ENCODING 1101 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +7C +C6 +06 +3E +06 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii10096 +ENCODING 1102 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +9C +B6 +B6 +F6 +B6 +B6 +9C +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii10097 +ENCODING 1103 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +7E +CC +CC +7C +6C +6C +CE +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0450 +ENCODING 1104 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +60 +30 +00 +7C +C6 +FE +C0 +C0 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii10071 +ENCODING 1105 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +6C +6C +00 +7C +C6 +FE +C0 +C0 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii10099 +ENCODING 1106 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +60 +F8 +60 +6C +76 +66 +66 +66 +66 +E6 +06 +06 +1C +00 +ENDCHAR +STARTCHAR afii10100 +ENCODING 1107 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +0C +18 +00 +FE +66 +62 +60 +60 +60 +F0 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii10101 +ENCODING 1108 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +7C +C6 +C0 +F8 +C0 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii10102 +ENCODING 1109 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +7C +C6 +60 +38 +0C +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii10103 +ENCODING 1110 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +18 +18 +00 +38 +18 +18 +18 +18 +18 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii10104 +ENCODING 1111 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +66 +66 +00 +38 +18 +18 +18 +18 +18 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii10105 +ENCODING 1112 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +06 +06 +00 +0E +06 +06 +06 +06 +06 +06 +66 +66 +3C +00 +ENDCHAR +STARTCHAR afii10106 +ENCODING 1113 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +78 +D8 +D8 +DE +DB +DB +DE +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii10107 +ENCODING 1114 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +D8 +D8 +D8 +FE +DB +DB +DE +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii10108 +ENCODING 1115 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +60 +F8 +60 +6C +76 +66 +66 +66 +66 +E6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii10109 +ENCODING 1116 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +0C +18 +00 +E6 +6C +78 +78 +6C +66 +E6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni045D +ENCODING 1117 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +60 +30 +00 +C6 +CE +DE +FE +F6 +E6 +C6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii10110 +ENCODING 1118 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +6C +38 +00 +C6 +C6 +C6 +C6 +C6 +C6 +7E +06 +0C +F8 +00 +ENDCHAR +STARTCHAR afii10193 +ENCODING 1119 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +C6 +C6 +C6 +C6 +C6 +C6 +FE +38 +10 +10 +00 +ENDCHAR +STARTCHAR uni0460 +ENCODING 1120 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +6C +C6 +C6 +D6 +D6 +D6 +D6 +D6 +FE +6C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0461 +ENCODING 1121 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +6C +C6 +D6 +D6 +D6 +FE +6C +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii10146 +ENCODING 1122 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +30 +FC +B4 +30 +3C +36 +36 +36 +36 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii10194 +ENCODING 1123 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +30 +30 +30 +FC +B4 +30 +3C +36 +36 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0464 +ENCODING 1124 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +CE +DB +D9 +D8 +FE +D8 +D8 +D9 +DB +CE +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0465 +ENCODING 1125 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +CE +DB +D8 +FE +D8 +DB +CE +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0466 +ENCODING 1126 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +10 +38 +38 +6C +6C +6C +FE +D6 +D6 +D6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0467 +ENCODING 1127 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +10 +38 +38 +6C +7C +D6 +D6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0468 +ENCODING 1128 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +88 +8C +9C +96 +F6 +B6 +BF +AB +EB +EB +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0469 +ENCODING 1129 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +88 +8C +9C +F6 +BE +AB +EB +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni046A +ENCODING 1130 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +FE +C6 +6C +6C +38 +7C +D6 +D6 +D6 +D6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni046B +ENCODING 1131 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +FE +C6 +6C +7C +D6 +D6 +D6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni046C +ENCODING 1132 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +FF +A3 +B2 +96 +FC +9C +BE +AA +AB +EB +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni046D +ENCODING 1133 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +BF +A3 +96 +FE +AB +AB +EB +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni046E +ENCODING 1134 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +6C +38 +10 +7C +C6 +06 +06 +7C +06 +06 +06 +7C +C0 +7C +00 +00 +ENDCHAR +STARTCHAR uni046F +ENCODING 1135 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +6C +38 +10 +00 +7C +86 +06 +7C +06 +06 +7C +C0 +7C +00 +00 +ENDCHAR +STARTCHAR uni0470 +ENCODING 1136 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +10 +96 +D6 +D6 +D6 +D6 +D6 +7C +10 +10 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0471 +ENCODING 1137 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +10 +10 +10 +96 +D6 +D6 +D6 +D6 +D6 +7C +10 +10 +10 +00 +ENDCHAR +STARTCHAR afii10147 +ENCODING 1138 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +7C +C6 +C6 +C6 +FE +C6 +C6 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii10195 +ENCODING 1139 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +7C +C6 +C6 +FE +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii10148 +ENCODING 1140 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +C2 +C6 +C6 +C4 +CC +6C +68 +78 +38 +30 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii10196 +ENCODING 1141 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +C2 +C6 +64 +6C +38 +38 +10 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0476 +ENCODING 1142 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +CC +66 +00 +C2 +C6 +C4 +C4 +6C +68 +78 +38 +30 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0477 +ENCODING 1143 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +CC +66 +00 +C2 +C6 +64 +6C +38 +38 +10 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0478 +ENCODING 1144 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +70 +D8 +D8 +DB +DB +DB +DB +DB +DB +6F +03 +06 +1C +00 +ENDCHAR +STARTCHAR uni0479 +ENCODING 1145 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +73 +DB +DB +DB +DB +DB +6F +03 +06 +1C +00 +ENDCHAR +STARTCHAR uni047A +ENCODING 1146 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +10 +7C +D6 +C6 +C6 +C6 +C6 +C6 +C6 +D6 +7C +10 +00 +00 +00 +ENDCHAR +STARTCHAR uni047B +ENCODING 1147 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +10 +7C +D6 +C6 +C6 +C6 +D6 +7C +10 +00 +00 +00 +ENDCHAR +STARTCHAR uni047C +ENCODING 1148 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +04 +7C +40 +6C +C6 +C6 +D6 +D6 +D6 +D6 +FE +6C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni047D +ENCODING 1149 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +04 +7C +40 +00 +6C +C6 +D6 +D6 +D6 +FE +6C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni047E +ENCODING 1150 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +7C +54 +00 +6C +C6 +C6 +D6 +D6 +D6 +D6 +FE +6C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni047F +ENCODING 1151 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +7C +54 +00 +6C +C6 +D6 +D6 +D6 +FE +6C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0480 +ENCODING 1152 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +3C +66 +C2 +C0 +C0 +C0 +C0 +C0 +60 +3C +0C +0C +0C +00 +ENDCHAR +STARTCHAR uni0481 +ENCODING 1153 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +7C +C6 +C0 +C0 +C0 +C0 +78 +18 +18 +00 +00 +ENDCHAR +STARTCHAR uni0482 +ENCODING 1154 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +06 +06 +3C +0F +18 +18 +F0 +3C +60 +60 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0483 +ENCODING 1155 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +04 +7C +40 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0484 +ENCODING 1156 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +18 +24 +44 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0485 +ENCODING 1157 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +40 +7C +40 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0486 +ENCODING 1158 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +04 +7C +04 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0488 +ENCODING 1160 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +18 +66 +00 +C3 +00 +66 +18 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0489 +ENCODING 1161 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +08 +50 +46 +00 +82 +41 +00 +62 +0A +10 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni048A +ENCODING 1162 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +6C +38 +C6 +C6 +C6 +CE +DE +FE +F6 +E6 +C6 +C7 +03 +01 +00 +00 +ENDCHAR +STARTCHAR uni048B +ENCODING 1163 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +6C +38 +00 +C6 +CE +DE +FE +F6 +E6 +C7 +03 +01 +00 +00 +ENDCHAR +STARTCHAR uni048C +ENCODING 1164 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +60 +F0 +60 +60 +60 +7C +66 +66 +66 +66 +FC +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni048D +ENCODING 1165 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +60 +F0 +60 +60 +7C +66 +66 +FC +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni048E +ENCODING 1166 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +FC +66 +6E +64 +7A +60 +60 +60 +60 +F0 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni048F +ENCODING 1167 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +DC +66 +66 +66 +6E +64 +7A +60 +60 +F0 +00 +ENDCHAR +STARTCHAR afii10050 +ENCODING 1168 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +02 +06 +FE +60 +60 +60 +60 +60 +60 +60 +60 +F0 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii10098 +ENCODING 1169 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +02 +06 +FE +60 +60 +60 +60 +60 +F0 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0492 +ENCODING 1170 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +FE +66 +62 +60 +F8 +60 +60 +60 +60 +F0 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0493 +ENCODING 1171 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +FE +66 +62 +F8 +60 +60 +F0 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0494 +ENCODING 1172 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +FE +66 +62 +60 +7C +66 +66 +66 +66 +F6 +06 +16 +0C +00 +ENDCHAR +STARTCHAR uni0495 +ENCODING 1173 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +FE +66 +62 +78 +6C +66 +F6 +06 +16 +0C +00 +ENDCHAR +STARTCHAR uni0496 +ENCODING 1174 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +D6 +D6 +D6 +7C +38 +7C +D6 +D6 +D6 +D7 +03 +01 +00 +00 +ENDCHAR +STARTCHAR uni0497 +ENCODING 1175 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +D6 +D6 +D6 +7C +D6 +D6 +D7 +03 +01 +00 +00 +ENDCHAR +STARTCHAR uni0498 +ENCODING 1176 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +7C +C6 +86 +06 +3C +06 +06 +86 +C6 +7C +30 +60 +38 +00 +ENDCHAR +STARTCHAR uni0499 +ENCODING 1177 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +7C +C6 +06 +3C +06 +C6 +7C +30 +60 +38 +00 +ENDCHAR +STARTCHAR uni049A +ENCODING 1178 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +E6 +66 +66 +6C +78 +78 +6C +66 +66 +E7 +03 +01 +00 +00 +ENDCHAR +STARTCHAR uni049B +ENCODING 1179 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +E6 +6C +78 +78 +6C +66 +E7 +03 +01 +00 +00 +ENDCHAR +STARTCHAR uni049C +ENCODING 1180 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +C6 +D6 +D6 +DC +F8 +DC +D6 +D6 +C6 +C6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni049D +ENCODING 1181 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +C6 +D6 +DC +F8 +DC +D6 +C6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni049E +ENCODING 1182 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +E6 +66 +F6 +6C +78 +78 +6C +66 +66 +E6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni049F +ENCODING 1183 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +E0 +60 +F0 +66 +6C +78 +78 +6C +66 +E6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni04A0 +ENCODING 1184 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +F3 +B3 +B3 +36 +3C +3C +36 +33 +33 +73 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni04A1 +ENCODING 1185 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +F3 +B6 +BC +3C +36 +33 +73 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni04A2 +ENCODING 1186 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +C6 +C6 +C6 +C6 +FE +C6 +C6 +C6 +C6 +C7 +03 +01 +00 +00 +ENDCHAR +STARTCHAR uni04A3 +ENCODING 1187 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +C6 +C6 +C6 +FE +C6 +C6 +C7 +03 +01 +00 +00 +ENDCHAR +STARTCHAR uni04A4 +ENCODING 1188 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +DF +DB +D9 +D8 +F8 +D8 +D8 +D8 +D8 +D8 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni04A5 +ENCODING 1189 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +DF +DB +D9 +F8 +D8 +D8 +D8 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni04A6 +ENCODING 1190 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +F8 +D8 +D8 +D8 +DE +DB +DB +DB +DB +DB +03 +0B +06 +00 +ENDCHAR +STARTCHAR uni04A7 +ENCODING 1191 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +D8 +D8 +D8 +FE +DB +DB +DB +03 +0B +06 +00 +ENDCHAR +STARTCHAR uni04A8 +ENCODING 1192 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +7C +C2 +CC +D6 +D6 +D6 +D6 +D6 +CC +7A +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni04A9 +ENCODING 1193 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +7C +C2 +CC +D6 +D6 +CC +7A +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni04AA +ENCODING 1194 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +3C +66 +C2 +C0 +C0 +C0 +C0 +C2 +66 +3C +18 +0C +38 +00 +ENDCHAR +STARTCHAR uni04AB +ENCODING 1195 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +7C +C6 +C0 +C0 +C0 +C6 +7C +18 +0C +38 +00 +ENDCHAR +STARTCHAR uni04AC +ENCODING 1196 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +7E +7E +5A +18 +18 +18 +18 +18 +18 +3C +0C +04 +00 +00 +ENDCHAR +STARTCHAR uni04AD +ENCODING 1197 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +7E +5A +18 +18 +18 +18 +3C +0C +04 +00 +00 +ENDCHAR +STARTCHAR uni04AE +ENCODING 1198 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +66 +66 +66 +66 +3C +18 +18 +18 +18 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni04AF +ENCODING 1199 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +66 +66 +66 +66 +66 +3C +18 +18 +18 +3C +00 +ENDCHAR +STARTCHAR uni04B0 +ENCODING 1200 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +66 +66 +66 +66 +3C +18 +7E +18 +18 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni04B1 +ENCODING 1201 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +66 +66 +66 +66 +66 +3C +18 +7E +18 +3C +00 +ENDCHAR +STARTCHAR uni04B2 +ENCODING 1202 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +C6 +C6 +6C +7C +38 +38 +7C +6C +C6 +C7 +03 +01 +00 +00 +ENDCHAR +STARTCHAR uni04B3 +ENCODING 1203 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +C6 +6C +38 +38 +38 +6C +C7 +03 +01 +00 +00 +ENDCHAR +STARTCHAR uni04B4 +ENCODING 1204 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +F6 +66 +66 +66 +66 +66 +66 +66 +66 +7F +03 +01 +00 +00 +ENDCHAR +STARTCHAR uni04B5 +ENCODING 1205 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +F6 +66 +66 +66 +66 +66 +7F +03 +01 +00 +00 +ENDCHAR +STARTCHAR uni04B6 +ENCODING 1206 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +C6 +C6 +C6 +C6 +C6 +7E +06 +06 +06 +07 +03 +01 +00 +00 +ENDCHAR +STARTCHAR uni04B7 +ENCODING 1207 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +C6 +C6 +C6 +7E +06 +06 +07 +03 +01 +00 +00 +ENDCHAR +STARTCHAR uni04B8 +ENCODING 1208 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +C6 +C6 +C6 +D6 +D6 +7E +16 +16 +06 +06 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni04B9 +ENCODING 1209 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +C6 +D6 +D6 +7E +16 +16 +06 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni04BA +ENCODING 1210 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +C0 +C0 +C0 +C0 +FC +C6 +C6 +C6 +C6 +C6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni04BB +ENCODING 1211 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +C0 +C0 +C0 +FC +C6 +C6 +C6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni04BC +ENCODING 1212 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +1E +33 +B3 +B3 +7F +30 +30 +30 +33 +1E +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni04BD +ENCODING 1213 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +9E +B3 +7F +30 +30 +33 +1E +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni04BE +ENCODING 1214 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +1E +33 +B3 +B3 +7F +30 +30 +30 +33 +1E +0C +18 +0E +00 +ENDCHAR +STARTCHAR uni04BF +ENCODING 1215 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +9E +B3 +7F +30 +30 +33 +1E +0C +18 +0E +00 +ENDCHAR +STARTCHAR uni04C0 +ENCODING 1216 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +3C +18 +18 +18 +18 +18 +18 +18 +18 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni04C1 +ENCODING 1217 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +6C +38 +D6 +D6 +D6 +7C +38 +7C +D6 +D6 +D6 +D6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni04C2 +ENCODING 1218 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +6C +38 +00 +D6 +D6 +D6 +7C +D6 +D6 +D6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni04C3 +ENCODING 1219 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +E6 +66 +66 +6C +78 +78 +6C +66 +66 +E6 +06 +16 +0C +00 +ENDCHAR +STARTCHAR uni04C4 +ENCODING 1220 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +E6 +6C +78 +78 +6C +66 +E6 +06 +16 +0C +00 +ENDCHAR +STARTCHAR uni04C5 +ENCODING 1221 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +3E +66 +66 +66 +66 +66 +66 +66 +66 +C7 +03 +01 +00 +00 +ENDCHAR +STARTCHAR uni04C6 +ENCODING 1222 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +3E +66 +66 +66 +66 +66 +C7 +03 +01 +00 +00 +ENDCHAR +STARTCHAR uni04C7 +ENCODING 1223 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +C6 +C6 +C6 +C6 +FE +C6 +C6 +C6 +C6 +C6 +06 +16 +0C +00 +ENDCHAR +STARTCHAR uni04C8 +ENCODING 1224 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +C6 +C6 +C6 +FE +C6 +C6 +C6 +06 +16 +0C +00 +ENDCHAR +STARTCHAR uni04C9 +ENCODING 1225 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +C6 +C6 +C6 +C6 +FE +C6 +C6 +C6 +C6 +C7 +03 +01 +00 +00 +ENDCHAR +STARTCHAR uni04CA +ENCODING 1226 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +C6 +C6 +C6 +FE +C6 +C6 +C7 +03 +01 +00 +00 +ENDCHAR +STARTCHAR uni04CB +ENCODING 1227 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +C6 +C6 +C6 +C6 +C6 +7E +06 +06 +06 +0E +0C +08 +00 +00 +ENDCHAR +STARTCHAR uni04CC +ENCODING 1228 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +C6 +C6 +C6 +7E +06 +06 +0E +0C +08 +00 +00 +ENDCHAR +STARTCHAR uni04CD +ENCODING 1229 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +C6 +EE +FE +FE +D6 +C6 +C6 +C6 +C6 +C7 +03 +01 +00 +00 +ENDCHAR +STARTCHAR uni04CE +ENCODING 1230 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +C6 +EE +FE +FE +D6 +C6 +C7 +03 +01 +00 +00 +ENDCHAR +STARTCHAR uni04D0 +ENCODING 1232 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +6C +38 +00 +10 +38 +6C +C6 +C6 +FE +C6 +C6 +C6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni04D1 +ENCODING 1233 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +6C +38 +00 +78 +0C +7C +CC +CC +CC +76 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni04D2 +ENCODING 1234 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +6C +6C +00 +10 +38 +6C +C6 +C6 +FE +C6 +C6 +C6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni04D3 +ENCODING 1235 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +6C +6C +00 +78 +0C +7C +CC +CC +CC +76 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni04D4 +ENCODING 1236 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +3E +6C +CC +CC +FE +CC +CC +CC +CC +CE +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni04D5 +ENCODING 1237 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +CC +76 +36 +7E +D8 +D8 +6E +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni04D6 +ENCODING 1238 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +6C +38 +00 +FE +66 +62 +68 +78 +68 +62 +66 +FE +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni04D7 +ENCODING 1239 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +6C +38 +00 +7C +C6 +FE +C0 +C0 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni04D8 +ENCODING 1240 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +7C +C6 +06 +06 +06 +FE +C6 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii10846 +ENCODING 1241 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +7C +C6 +06 +06 +FE +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni04DA +ENCODING 1242 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +6C +6C +00 +7C +C6 +06 +06 +FE +C6 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni04DB +ENCODING 1243 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +6C +6C +00 +7C +C6 +06 +06 +FE +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni04DC +ENCODING 1244 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +6C +6C +00 +D6 +D6 +D6 +7C +38 +7C +D6 +D6 +D6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni04DD +ENCODING 1245 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +6C +6C +00 +D6 +D6 +D6 +7C +D6 +D6 +D6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni04DE +ENCODING 1246 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +6C +6C +00 +7C +C6 +86 +06 +3C +06 +86 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni04DF +ENCODING 1247 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +6C +6C +00 +7C +C6 +06 +3C +06 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni04E0 +ENCODING 1248 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +FE +06 +0C +18 +3C +06 +06 +86 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni04E1 +ENCODING 1249 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +FE +06 +0C +18 +3C +06 +06 +06 +C6 +7C +00 +ENDCHAR +STARTCHAR uni04E2 +ENCODING 1250 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +7C +00 +C6 +C6 +CE +DE +FE +F6 +E6 +C6 +C6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni04E3 +ENCODING 1251 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +7C +00 +C6 +CE +DE +FE +F6 +E6 +C6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni04E4 +ENCODING 1252 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +6C +6C +00 +C6 +C6 +CE +DE +FE +F6 +E6 +C6 +C6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni04E5 +ENCODING 1253 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +6C +6C +00 +C6 +CE +DE +FE +F6 +E6 +C6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni04E6 +ENCODING 1254 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +6C +6C +00 +7C +C6 +C6 +C6 +C6 +C6 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni04E7 +ENCODING 1255 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +6C +6C +00 +7C +C6 +C6 +C6 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni04E8 +ENCODING 1256 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +7C +C6 +C6 +C6 +FE +C6 +C6 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni04E9 +ENCODING 1257 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +7C +C6 +C6 +FE +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni04EA +ENCODING 1258 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +6C +6C +00 +7C +C6 +C6 +C6 +FE +C6 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni04EB +ENCODING 1259 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +6C +6C +00 +7C +C6 +C6 +FE +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni04EC +ENCODING 1260 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +6C +6C +00 +78 +CC +86 +06 +3E +06 +86 +CC +78 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni04ED +ENCODING 1261 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +6C +6C +00 +7C +C6 +06 +3E +06 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni04EE +ENCODING 1262 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +7C +00 +C6 +C6 +C6 +C6 +7E +06 +06 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni04EF +ENCODING 1263 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +7C +00 +C6 +C6 +C6 +C6 +C6 +C6 +7E +06 +0C +F8 +00 +ENDCHAR +STARTCHAR uni04F0 +ENCODING 1264 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +6C +6C +00 +C6 +C6 +C6 +C6 +7E +06 +06 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni04F1 +ENCODING 1265 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +6C +6C +00 +C6 +C6 +C6 +C6 +C6 +C6 +7E +06 +0C +F8 +00 +ENDCHAR +STARTCHAR uni04F2 +ENCODING 1266 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +66 +CC +00 +C6 +C6 +C6 +C6 +7E +06 +06 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni04F3 +ENCODING 1267 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +66 +CC +00 +C6 +C6 +C6 +C6 +C6 +C6 +7E +06 +0C +F8 +00 +ENDCHAR +STARTCHAR uni04F4 +ENCODING 1268 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +6C +6C +00 +C6 +C6 +C6 +C6 +7E +06 +06 +06 +06 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni04F5 +ENCODING 1269 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +6C +6C +00 +C6 +C6 +C6 +7E +06 +06 +06 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni04F8 +ENCODING 1272 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +6C +6C +00 +C3 +C3 +C3 +F3 +DB +DB +DB +DB +F3 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni04F9 +ENCODING 1273 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +6C +6C +00 +C3 +C3 +C3 +F3 +DB +DB +F3 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0500 +ENCODING 1280 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +1E +0C +0C +0C +7C +CC +CC +CC +CC +7E +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0501 +ENCODING 1281 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +1C +0C +0C +3C +6C +CC +CC +CC +CC +76 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0502 +ENCODING 1282 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +1E +0C +0C +0C +7C +CD +CD +CD +CD +76 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0503 +ENCODING 1283 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +1C +0C +0C +3C +6C +CC +CD +CD +CD +76 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0504 +ENCODING 1284 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +78 +CC +8C +0C +38 +0D +0D +0D +0D +06 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0505 +ENCODING 1285 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +78 +CC +0C +39 +0D +0D +06 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0506 +ENCODING 1286 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +7C +C6 +86 +06 +3C +06 +06 +06 +06 +07 +03 +01 +00 +00 +ENDCHAR +STARTCHAR uni0507 +ENCODING 1287 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +7C +C6 +06 +3C +06 +06 +07 +03 +01 +00 +00 +ENDCHAR +STARTCHAR uni0508 +ENCODING 1288 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +3C +6C +6C +6C +6C +6D +6D +6D +6D +C6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0509 +ENCODING 1289 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +3C +6C +6C +6D +6D +6D +C6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni050A +ENCODING 1290 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +CC +CC +CC +CC +FC +CD +CD +CD +CD +C6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni050B +ENCODING 1291 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +CC +CC +CC +FD +CD +CD +C6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni050C +ENCODING 1292 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +3C +66 +C2 +C0 +C0 +CE +C6 +C6 +66 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni050D +ENCODING 1293 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +7C +C6 +C0 +CE +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni050E +ENCODING 1294 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +7E +7E +5A +18 +18 +1B +1B +1B +1B +0E +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni050F +ENCODING 1295 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +7E +5A +18 +1B +1B +1B +0E +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0530 +ENCODING 1328 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +18 +64 +94 +BA +52 +4C +30 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0531 +ENCODING 1329 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +CC +CC +CC +CC +CC +CC +CC +CC +CF +7B +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0532 +ENCODING 1330 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +3C +66 +66 +66 +66 +60 +60 +7E +60 +60 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0533 +ENCODING 1331 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +78 +CC +CC +CC +CC +7F +0C +0C +0C +0C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0534 +ENCODING 1332 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +78 +CC +CC +CC +CC +CF +0C +0C +0C +0C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0535 +ENCODING 1333 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +60 +7E +60 +60 +66 +66 +66 +66 +66 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0536 +ENCODING 1334 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +3C +66 +66 +66 +66 +3E +06 +0C +D8 +FE +C3 +00 +00 +00 +ENDCHAR +STARTCHAR uni0537 +ENCODING 1335 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +60 +60 +7E +60 +60 +60 +60 +60 +60 +7C +06 +00 +00 +00 +ENDCHAR +STARTCHAR uni0538 +ENCODING 1336 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +3C +66 +66 +66 +66 +66 +60 +60 +60 +7E +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0539 +ENCODING 1337 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +7C +C6 +CF +D6 +D6 +D6 +D6 +CC +C0 +C0 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni053A +ENCODING 1338 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +0C +0C +0C +0C +7F +CC +CC +CC +CC +78 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni053B +ENCODING 1339 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +60 +60 +7C +66 +66 +66 +66 +66 +60 +60 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni053C +ENCODING 1340 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +60 +60 +60 +60 +60 +60 +60 +60 +60 +7C +06 +00 +00 +00 +ENDCHAR +STARTCHAR uni053D +ENCODING 1341 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +C0 +C0 +F6 +D6 +D6 +D6 +D6 +CC +C0 +C0 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni053E +ENCODING 1342 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +C0 +7F +24 +66 +66 +66 +66 +66 +66 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni053F +ENCODING 1343 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +60 +60 +66 +66 +66 +66 +66 +3E +06 +06 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0540 +ENCODING 1344 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +18 +30 +18 +0C +18 +30 +60 +F0 +3C +0E +04 +00 +00 +00 +ENDCHAR +STARTCHAR uni0541 +ENCODING 1345 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +3C +66 +66 +66 +06 +06 +06 +6C +D8 +6E +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0542 +ENCODING 1346 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +78 +CC +CC +CC +CC +CC +0C +0C +0C +0F +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0543 +ENCODING 1347 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +1E +30 +60 +F8 +6C +66 +66 +66 +66 +7E +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0544 +ENCODING 1348 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +CF +CC +CC +CC +CC +CC +CC +CC +CC +78 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0545 +ENCODING 1349 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +3C +66 +06 +06 +7C +06 +06 +66 +66 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0546 +ENCODING 1350 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +E0 +60 +60 +60 +66 +66 +66 +66 +66 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0547 +ENCODING 1351 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +3C +06 +3E +66 +60 +60 +60 +66 +66 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0548 +ENCODING 1352 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +3C +66 +66 +66 +66 +66 +66 +66 +66 +66 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0549 +ENCODING 1353 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +3C +66 +66 +66 +06 +06 +06 +6C +38 +0E +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni054A +ENCODING 1354 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +7C +D6 +D6 +D6 +D6 +D6 +16 +16 +06 +06 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni054B +ENCODING 1355 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +3C +66 +66 +66 +76 +1E +0E +0C +D8 +FE +C3 +00 +00 +00 +ENDCHAR +STARTCHAR uni054C +ENCODING 1356 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +78 +CC +CC +CC +CC +CF +CC +CC +CC +CC +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni054D +ENCODING 1357 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +66 +66 +66 +66 +66 +66 +66 +66 +66 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni054E +ENCODING 1358 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +0C +0C +CC +CC +CC +CC +7C +0C +0C +0F +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni054F +ENCODING 1359 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +7C +C6 +C6 +60 +30 +18 +0C +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0550 +ENCODING 1360 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +3C +66 +66 +66 +66 +66 +60 +60 +60 +60 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0551 +ENCODING 1361 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +3C +66 +66 +66 +3C +66 +06 +06 +66 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0552 +ENCODING 1362 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +60 +60 +7C +66 +66 +66 +66 +63 +60 +60 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0553 +ENCODING 1363 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +10 +7C +D6 +D6 +D6 +D6 +D6 +D6 +7C +10 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0554 +ENCODING 1364 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +3C +66 +66 +66 +7C +60 +60 +FE +60 +60 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0555 +ENCODING 1365 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +3C +66 +66 +66 +66 +66 +66 +66 +66 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0556 +ENCODING 1366 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +70 +D0 +D0 +D0 +7C +16 +16 +16 +D6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0559 +ENCODING 1369 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +18 +30 +30 +18 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni055A +ENCODING 1370 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +30 +18 +18 +30 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni055B +ENCODING 1371 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +18 +30 +60 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni055C +ENCODING 1372 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +06 +3C +60 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni055D +ENCODING 1373 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +30 +18 +0C +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni055E +ENCODING 1374 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +1C +36 +6C +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni055F +ENCODING 1375 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +70 +60 +3E +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0561 +ENCODING 1377 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +D6 +D6 +D6 +D6 +D6 +D6 +6A +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0562 +ENCODING 1378 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +7C +66 +66 +66 +60 +60 +7E +60 +60 +60 +00 +ENDCHAR +STARTCHAR uni0563 +ENCODING 1379 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +7C +CC +CC +CC +CC +CC +7F +0C +0C +0C +00 +ENDCHAR +STARTCHAR uni0564 +ENCODING 1380 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +F8 +CC +CC +CC +CC +CC +CF +0C +0C +0C +00 +ENDCHAR +STARTCHAR uni0565 +ENCODING 1381 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +60 +60 +7E +60 +60 +66 +66 +66 +66 +3E +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0566 +ENCODING 1382 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +7C +CC +CC +CC +CC +CC +7C +0C +0C +0F +00 +ENDCHAR +STARTCHAR uni0567 +ENCODING 1383 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +60 +60 +60 +7C +60 +60 +60 +60 +60 +78 +0C +18 +00 +00 +ENDCHAR +STARTCHAR uni0568 +ENCODING 1384 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +7C +66 +66 +66 +66 +66 +66 +60 +60 +7E +00 +ENDCHAR +STARTCHAR uni0569 +ENCODING 1385 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +FC +C6 +C6 +CF +D6 +D6 +CC +C0 +C0 +C0 +00 +ENDCHAR +STARTCHAR uni056A +ENCODING 1386 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +0C +0C +0C +7F +CC +CC +CC +CC +CC +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni056B +ENCODING 1387 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +60 +60 +60 +7C +66 +66 +66 +66 +66 +66 +60 +60 +60 +00 +ENDCHAR +STARTCHAR uni056C +ENCODING 1388 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +30 +30 +30 +30 +30 +30 +30 +30 +30 +3E +00 +ENDCHAR +STARTCHAR uni056D +ENCODING 1389 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +C0 +C0 +C0 +F6 +D6 +D6 +D6 +D6 +D6 +CA +C0 +C0 +C0 +00 +ENDCHAR +STARTCHAR uni056E +ENCODING 1390 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +60 +38 +0C +7F +CC +CC +CC +CC +CC +78 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni056F +ENCODING 1391 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +60 +60 +60 +66 +66 +66 +66 +66 +66 +3E +06 +06 +06 +00 +ENDCHAR +STARTCHAR uni0570 +ENCODING 1392 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +60 +60 +60 +7C +66 +66 +66 +66 +66 +66 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0571 +ENCODING 1393 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +30 +1C +0C +18 +3C +64 +66 +62 +63 +3D +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0572 +ENCODING 1394 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +F8 +CC +CC +CC +CC +CC +CC +0C +0C +0F +00 +ENDCHAR +STARTCHAR uni0573 +ENCODING 1395 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +0E +18 +30 +F8 +6C +66 +66 +66 +66 +3E +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0574 +ENCODING 1396 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +0F +0C +0C +CC +CC +CC +CC +CC +CC +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0575 +ENCODING 1397 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +0C +0C +0C +0C +0C +0C +0C +0C +6C +38 +00 +ENDCHAR +STARTCHAR uni0576 +ENCODING 1398 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +E0 +60 +60 +66 +66 +66 +66 +66 +66 +3E +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0577 +ENCODING 1399 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +3C +66 +66 +66 +06 +0C +18 +30 +60 +3E +00 +ENDCHAR +STARTCHAR uni0578 +ENCODING 1400 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +7C +66 +66 +66 +66 +66 +66 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0579 +ENCODING 1401 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +0C +18 +18 +0C +06 +0C +18 +30 +60 +3E +00 +ENDCHAR +STARTCHAR uni057A +ENCODING 1402 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +D6 +D6 +D6 +D6 +D6 +D6 +7E +06 +06 +06 +00 +ENDCHAR +STARTCHAR uni057B +ENCODING 1403 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +3C +66 +66 +66 +76 +1C +18 +30 +60 +3E +00 +ENDCHAR +STARTCHAR uni057C +ENCODING 1404 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +F8 +CC +CC +CC +CC +CC +CF +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni057D +ENCODING 1405 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +66 +66 +66 +66 +66 +66 +3E +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni057E +ENCODING 1406 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +0C +0C +0C +CC +CC +CC +CC +CC +CC +7C +0C +0C +0F +00 +ENDCHAR +STARTCHAR uni057F +ENCODING 1407 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +DC +D6 +D6 +D6 +D6 +D6 +76 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0580 +ENCODING 1408 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +7C +66 +66 +66 +66 +66 +66 +60 +60 +60 +00 +ENDCHAR +STARTCHAR uni0581 +ENCODING 1409 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +3E +66 +66 +66 +66 +66 +3E +06 +66 +3C +00 +ENDCHAR +STARTCHAR uni0582 +ENCODING 1410 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +30 +30 +30 +30 +30 +30 +3E +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0583 +ENCODING 1411 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +10 +10 +10 +DC +D6 +D6 +D6 +D6 +D6 +76 +10 +10 +10 +00 +ENDCHAR +STARTCHAR uni0584 +ENCODING 1412 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +7C +66 +66 +66 +66 +7C +60 +FE +60 +60 +00 +ENDCHAR +STARTCHAR uni0585 +ENCODING 1413 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +3C +66 +66 +66 +66 +66 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0586 +ENCODING 1414 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +70 +D0 +D0 +7C +16 +16 +16 +16 +D6 +7C +10 +10 +10 +00 +ENDCHAR +STARTCHAR uni0587 +ENCODING 1415 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +C0 +C0 +C0 +C0 +C0 +CC +CC +CC +CC +77 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0589 +ENCODING 1417 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +18 +18 +00 +00 +00 +18 +18 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni058A +ENCODING 1418 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +C0 +C6 +7C +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0591 +ENCODING 1425 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +10 +10 +38 +6C +ENDCHAR +STARTCHAR uni0592 +ENCODING 1426 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +18 +00 +66 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0593 +ENCODING 1427 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +08 +38 +10 +38 +20 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0594 +ENCODING 1428 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +18 +00 +18 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0595 +ENCODING 1429 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +6C +60 +6C +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0596 +ENCODING 1430 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +10 +18 +0C +00 +ENDCHAR +STARTCHAR uni0597 +ENCODING 1431 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +10 +38 +10 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0598 +ENCODING 1432 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +74 +D6 +5C +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0599 +ENCODING 1433 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +C0 +60 +20 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni059A +ENCODING 1434 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +03 +06 +03 +00 +ENDCHAR +STARTCHAR uni059B +ENCODING 1435 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +28 +18 +30 +00 +ENDCHAR +STARTCHAR uni059C +ENCODING 1436 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +0C +18 +10 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni059D +ENCODING 1437 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +03 +06 +04 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni059E +ENCODING 1438 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +1B +36 +24 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni059F +ENCODING 1439 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +44 +AA +6C +28 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni05A0 +ENCODING 1440 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +04 +0A +0C +08 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni05A1 +ENCODING 1441 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +40 +50 +E0 +80 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni05A3 +ENCODING 1443 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +0C +0C +3C +00 +ENDCHAR +STARTCHAR uni05A4 +ENCODING 1444 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +18 +30 +18 +00 +ENDCHAR +STARTCHAR uni05A5 +ENCODING 1445 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +10 +30 +60 +00 +ENDCHAR +STARTCHAR uni05A6 +ENCODING 1446 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +24 +6C +D8 +00 +ENDCHAR +STARTCHAR uni05A7 +ENCODING 1447 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +18 +30 +08 +30 +ENDCHAR +STARTCHAR uni05A8 +ENCODING 1448 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +60 +30 +10 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni05A9 +ENCODING 1449 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +40 +A0 +60 +20 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni05AA +ENCODING 1450 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +6C +38 +10 +10 +ENDCHAR +STARTCHAR uni05AB +ENCODING 1451 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +18 +30 +18 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni05AC +ENCODING 1452 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +0C +0C +3C +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni05AD +ENCODING 1453 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +04 +06 +03 +00 +ENDCHAR +STARTCHAR uni05AE +ENCODING 1454 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +48 +A8 +90 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni05AF +ENCODING 1455 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +38 +6C +38 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii57799 +ENCODING 1456 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +18 +00 +18 +00 +ENDCHAR +STARTCHAR afii57801 +ENCODING 1457 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +DB +00 +33 +00 +ENDCHAR +STARTCHAR afii57800 +ENCODING 1458 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +F6 +00 +06 +00 +ENDCHAR +STARTCHAR afii57802 +ENCODING 1459 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +F6 +60 +66 +00 +ENDCHAR +STARTCHAR afii57793 +ENCODING 1460 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +18 +00 +00 +00 +ENDCHAR +STARTCHAR afii57794 +ENCODING 1461 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +66 +00 +00 +00 +ENDCHAR +STARTCHAR afii57795 +ENCODING 1462 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +66 +00 +18 +00 +ENDCHAR +STARTCHAR afii57798 +ENCODING 1463 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +7E +00 +00 +ENDCHAR +STARTCHAR afii57797 +ENCODING 1464 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +7E +18 +18 +ENDCHAR +STARTCHAR afii57806 +ENCODING 1465 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +60 +60 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii57796 +ENCODING 1467 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +C0 +18 +03 +00 +ENDCHAR +STARTCHAR afii57807 +ENCODING 1468 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +18 +18 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii57839 +ENCODING 1469 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +18 +18 +18 +ENDCHAR +STARTCHAR afii57645 +ENCODING 1470 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +7E +FC +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii57841 +ENCODING 1471 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +7C +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii57842 +ENCODING 1472 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +18 +18 +18 +18 +18 +18 +18 +18 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii57804 +ENCODING 1473 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +06 +06 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii57803 +ENCODING 1474 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +C0 +C0 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii57658 +ENCODING 1475 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +18 +18 +00 +00 +00 +00 +18 +18 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni05C4 +ENCODING 1476 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +18 +18 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii57664 +ENCODING 1488 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +C6 +C6 +66 +76 +DC +CC +C6 +C6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii57665 +ENCODING 1489 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +F8 +0C +0C +0C +0C +0C +0C +FE +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii57666 +ENCODING 1490 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +38 +0C +0C +0C +0C +1C +36 +E6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii57667 +ENCODING 1491 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +FE +0C +0C +0C +0C +0C +0C +0C +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii57668 +ENCODING 1492 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +FC +06 +06 +06 +C6 +C6 +C6 +C6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii57669 +ENCODING 1493 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +70 +18 +18 +18 +18 +18 +18 +18 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii57670 +ENCODING 1494 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +7E +18 +18 +18 +0C +0C +18 +30 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii57671 +ENCODING 1495 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +FC +66 +C6 +C6 +C6 +C6 +C6 +C6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii57672 +ENCODING 1496 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +CC +D6 +D6 +C6 +C6 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii57673 +ENCODING 1497 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +70 +18 +18 +18 +30 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii57674 +ENCODING 1498 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +FC +06 +06 +06 +0C +0C +0C +0C +0C +0C +0E +00 +ENDCHAR +STARTCHAR afii57675 +ENCODING 1499 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +FC +06 +06 +06 +06 +06 +06 +FC +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii57676 +ENCODING 1500 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +C0 +C0 +FC +06 +06 +06 +06 +0C +18 +18 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii57677 +ENCODING 1501 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +FC +66 +C6 +C6 +C6 +C6 +C6 +FE +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii57678 +ENCODING 1502 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +DC +76 +66 +C6 +C6 +C6 +C6 +DE +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii57679 +ENCODING 1503 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +38 +0C +0C +18 +18 +18 +18 +18 +18 +18 +1C +00 +ENDCHAR +STARTCHAR afii57680 +ENCODING 1504 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +38 +0C +0C +0C +0C +0C +0C +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii57681 +ENCODING 1505 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +FC +66 +C6 +C6 +C6 +C6 +CC +78 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii57682 +ENCODING 1506 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +EE +66 +66 +66 +66 +66 +2C +F8 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii57683 +ENCODING 1507 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +F8 +4C +CC +CC +EC +0C +0C +0C +0C +0C +0E +00 +ENDCHAR +STARTCHAR afii57684 +ENCODING 1508 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +FC +46 +C6 +C6 +E6 +06 +06 +FE +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii57685 +ENCODING 1509 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +EE +66 +66 +6C +78 +60 +60 +60 +60 +60 +70 +00 +ENDCHAR +STARTCHAR afii57686 +ENCODING 1510 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +EE +66 +66 +34 +18 +0C +06 +FE +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii57687 +ENCODING 1511 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +FC +06 +06 +66 +64 +6C +6E +60 +60 +60 +60 +00 +ENDCHAR +STARTCHAR afii57688 +ENCODING 1512 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +FC +06 +06 +06 +06 +06 +06 +06 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii57689 +ENCODING 1513 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +D6 +D6 +D6 +D6 +D6 +F6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii57690 +ENCODING 1514 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +FC +66 +66 +66 +66 +66 +E6 +E6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii57716 +ENCODING 1520 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +CC +66 +66 +66 +66 +66 +66 +66 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii57717 +ENCODING 1521 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +CC +66 +66 +66 +C6 +06 +06 +06 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii57718 +ENCODING 1522 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +CC +66 +66 +66 +CC +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni05F3 +ENCODING 1523 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +0C +18 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni05F4 +ENCODING 1524 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +66 +CC +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii57388 +ENCODING 1548 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +08 +10 +18 +18 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii57403 +ENCODING 1563 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +0C +18 +18 +00 +00 +00 +18 +18 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii57407 +ENCODING 1567 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +1C +22 +20 +10 +08 +08 +00 +08 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii57409 +ENCODING 1569 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +18 +24 +20 +1E +20 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii57410 +ENCODING 1570 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +02 +3C +40 +10 +10 +10 +10 +10 +10 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii57411 +ENCODING 1571 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +18 +20 +1C +20 +08 +08 +08 +08 +08 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii57412 +ENCODING 1572 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +1C +20 +1C +20 +0C +12 +0E +02 +04 +18 +60 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii57413 +ENCODING 1573 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +08 +08 +08 +08 +08 +08 +00 +18 +20 +1C +20 +00 +00 +ENDCHAR +STARTCHAR afii57414 +ENCODING 1574 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +30 +40 +38 +40 +07 +08 +88 +86 +81 +82 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii57415 +ENCODING 1575 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +08 +08 +08 +08 +08 +08 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii57416 +ENCODING 1576 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +40 +81 +81 +7E +00 +00 +08 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii57417 +ENCODING 1577 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +28 +00 +00 +18 +24 +22 +22 +1C +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii57418 +ENCODING 1578 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +14 +40 +81 +81 +7E +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii57419 +ENCODING 1579 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +08 +00 +14 +00 +40 +81 +81 +7E +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii57420 +ENCODING 1580 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +70 +8F +30 +40 +80 +88 +80 +41 +3E +00 +00 +00 +ENDCHAR +STARTCHAR afii57421 +ENCODING 1581 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +70 +8F +30 +40 +80 +80 +80 +41 +3E +00 +00 +00 +ENDCHAR +STARTCHAR afii57422 +ENCODING 1582 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +20 +00 +00 +70 +8F +30 +40 +80 +80 +80 +41 +3E +00 +00 +00 +ENDCHAR +STARTCHAR afii57423 +ENCODING 1583 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +08 +04 +02 +42 +3C +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii57424 +ENCODING 1584 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +10 +00 +08 +04 +02 +42 +3C +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii57425 +ENCODING 1585 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +04 +02 +02 +04 +18 +60 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii57426 +ENCODING 1586 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +08 +00 +00 +04 +02 +02 +04 +18 +60 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii57427 +ENCODING 1587 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +01 +15 +88 +84 +84 +78 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii57428 +ENCODING 1588 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +08 +00 +14 +00 +01 +15 +88 +84 +84 +78 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii57429 +ENCODING 1589 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +06 +09 +31 +9E +88 +88 +70 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii57430 +ENCODING 1590 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +04 +00 +06 +09 +31 +9E +88 +88 +70 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii57431 +ENCODING 1591 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +20 +20 +20 +2C +32 +A2 +7C +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii57432 +ENCODING 1592 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +24 +20 +20 +2C +32 +A2 +7C +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii57433 +ENCODING 1593 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +70 +80 +8C +70 +40 +80 +80 +80 +41 +3E +00 +00 +ENDCHAR +STARTCHAR afii57434 +ENCODING 1594 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +40 +00 +00 +70 +80 +8C +70 +40 +80 +80 +80 +41 +3E +00 +00 +ENDCHAR +STARTCHAR afii57440 +ENCODING 1600 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +FF +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii57441 +ENCODING 1601 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +04 +00 +06 +49 +85 +83 +7E +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii57442 +ENCODING 1602 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +0A +00 +06 +09 +09 +47 +81 +81 +81 +42 +3C +00 +00 +00 +ENDCHAR +STARTCHAR afii57443 +ENCODING 1603 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +19 +21 +19 +21 +01 +81 +7E +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii57444 +ENCODING 1604 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +02 +02 +02 +02 +02 +42 +82 +82 +84 +78 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii57445 +ENCODING 1605 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +0C +12 +12 +3C +40 +40 +40 +40 +40 +40 +00 +00 +ENDCHAR +STARTCHAR afii57446 +ENCODING 1606 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +08 +00 +00 +41 +81 +81 +81 +42 +3C +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii57470 +ENCODING 1607 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +40 +30 +4E +49 +39 +E6 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii57448 +ENCODING 1608 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +0C +12 +0E +02 +04 +18 +60 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii57449 +ENCODING 1609 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +07 +08 +88 +86 +81 +81 +7E +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii57450 +ENCODING 1610 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +07 +08 +88 +86 +81 +81 +7E +00 +00 +24 +00 +ENDCHAR +STARTCHAR afii57451 +ENCODING 1611 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +0C +30 +0C +30 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii57452 +ENCODING 1612 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +0C +12 +CA +2C +70 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii57453 +ENCODING 1613 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +0C +30 +0C +30 +00 +00 +ENDCHAR +STARTCHAR afii57454 +ENCODING 1614 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +0C +30 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii57455 +ENCODING 1615 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +08 +14 +0C +08 +10 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii57456 +ENCODING 1616 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +0C +30 +00 +00 +ENDCHAR +STARTCHAR afii57457 +ENCODING 1617 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +0A +2A +2C +10 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii57458 +ENCODING 1618 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +18 +24 +18 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0653 +ENCODING 1619 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +01 +7E +80 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0654 +ENCODING 1620 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +0C +10 +0C +10 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0655 +ENCODING 1621 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +0C +10 +0C +10 +ENDCHAR +STARTCHAR afii57392 +ENCODING 1632 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +30 +78 +30 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii57393 +ENCODING 1633 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +20 +70 +70 +38 +18 +18 +08 +08 +08 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii57394 +ENCODING 1634 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +44 +FC +F8 +60 +30 +30 +10 +10 +10 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii57395 +ENCODING 1635 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +4A +FE +F4 +60 +30 +30 +10 +10 +10 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii57396 +ENCODING 1636 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +10 +20 +40 +30 +10 +20 +42 +7C +38 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii57397 +ENCODING 1637 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +10 +38 +2C +44 +42 +82 +82 +FE +7C +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii57398 +ENCODING 1638 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +80 +F8 +78 +08 +08 +08 +0C +0E +06 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii57399 +ENCODING 1639 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +82 +C6 +C6 +6C +28 +38 +10 +10 +10 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii57400 +ENCODING 1640 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +10 +10 +10 +38 +28 +6C +C6 +C6 +82 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii57401 +ENCODING 1641 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +70 +F8 +88 +F8 +78 +08 +0C +0E +06 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii57381 +ENCODING 1642 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +60 +91 +92 +64 +08 +10 +26 +49 +89 +06 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni066B +ENCODING 1643 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +18 +18 +30 +30 +60 +60 +00 +00 +ENDCHAR +STARTCHAR uni066C +ENCODING 1644 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +10 +38 +18 +10 +20 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii63167 +ENCODING 1645 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +10 +10 +38 +FE +7C +38 +6C +44 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0670 +ENCODING 1648 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +10 +10 +10 +10 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0671 +ENCODING 1649 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +06 +29 +5E +00 +04 +04 +04 +04 +04 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0672 +ENCODING 1650 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +06 +28 +5E +00 +04 +04 +04 +04 +04 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0673 +ENCODING 1651 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +04 +04 +04 +04 +04 +04 +00 +06 +28 +5E +00 +00 +00 +ENDCHAR +STARTCHAR uni0674 +ENCODING 1652 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +07 +08 +07 +08 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0675 +ENCODING 1653 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +03 +04 +03 +14 +10 +10 +10 +10 +10 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0676 +ENCODING 1654 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +03 +04 +03 +04 +00 +0C +12 +0E +02 +04 +18 +60 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0677 +ENCODING 1655 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +23 +54 +33 +24 +40 +0C +12 +0E +02 +04 +18 +60 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0678 +ENCODING 1656 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +03 +04 +03 +04 +00 +07 +08 +88 +86 +81 +81 +7E +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii57511 +ENCODING 1657 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +10 +1C +14 +38 +00 +40 +81 +81 +7E +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni067A +ENCODING 1658 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +08 +00 +08 +00 +40 +81 +81 +7E +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni067B +ENCODING 1659 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +40 +81 +81 +7E +00 +08 +00 +08 +00 +00 +00 +ENDCHAR +STARTCHAR uni067C +ENCODING 1660 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +14 +40 +81 +81 +7E +08 +14 +08 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni067D +ENCODING 1661 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +14 +00 +08 +00 +40 +81 +81 +7E +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii57506 +ENCODING 1662 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +40 +81 +81 +7E +00 +00 +14 +00 +08 +00 +00 +ENDCHAR +STARTCHAR uni067F +ENCODING 1663 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +14 +00 +14 +00 +40 +81 +81 +7E +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0680 +ENCODING 1664 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +40 +81 +81 +7E +00 +00 +14 +00 +14 +00 +00 +ENDCHAR +STARTCHAR uni0681 +ENCODING 1665 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +06 +08 +06 +08 +70 +8F +30 +40 +80 +80 +80 +41 +3E +00 +00 +00 +ENDCHAR +STARTCHAR uni0682 +ENCODING 1666 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +08 +00 +08 +00 +70 +8F +30 +40 +80 +80 +80 +41 +3E +00 +00 +00 +ENDCHAR +STARTCHAR uni0683 +ENCODING 1667 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +70 +8F +30 +40 +80 +94 +80 +41 +3E +00 +00 +00 +ENDCHAR +STARTCHAR uni0684 +ENCODING 1668 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +70 +8F +30 +40 +88 +80 +88 +41 +3E +00 +00 +00 +ENDCHAR +STARTCHAR uni0685 +ENCODING 1669 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +08 +00 +14 +00 +70 +8F +30 +40 +80 +80 +80 +41 +3E +00 +00 +00 +ENDCHAR +STARTCHAR afii57507 +ENCODING 1670 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +70 +8F +30 +40 +94 +80 +88 +41 +3E +00 +00 +00 +ENDCHAR +STARTCHAR uni0687 +ENCODING 1671 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +70 +8F +30 +40 +94 +80 +94 +41 +3E +00 +00 +00 +ENDCHAR +STARTCHAR afii57512 +ENCODING 1672 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +20 +38 +28 +70 +08 +04 +02 +42 +3C +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0689 +ENCODING 1673 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +08 +04 +02 +42 +3C +08 +14 +08 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni068A +ENCODING 1674 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +08 +04 +02 +42 +3C +00 +00 +08 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni068B +ENCODING 1675 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +20 +38 +28 +70 +08 +04 +02 +42 +3C +00 +00 +08 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni068C +ENCODING 1676 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +14 +00 +00 +08 +04 +02 +42 +3C +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni068D +ENCODING 1677 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +08 +04 +02 +42 +3C +00 +00 +14 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni068E +ENCODING 1678 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +08 +00 +14 +00 +08 +04 +02 +42 +3C +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni068F +ENCODING 1679 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +14 +00 +08 +00 +08 +04 +02 +42 +3C +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0690 +ENCODING 1680 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +14 +00 +14 +00 +08 +04 +02 +42 +3C +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii57513 +ENCODING 1681 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +10 +1C +14 +38 +00 +04 +02 +02 +04 +18 +60 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0692 +ENCODING 1682 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +14 +08 +00 +00 +04 +02 +02 +04 +18 +60 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0693 +ENCODING 1683 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +04 +02 +02 +04 +1C +6A +04 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0694 +ENCODING 1684 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +04 +02 +02 +04 +18 +62 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0695 +ENCODING 1685 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +04 +02 +02 +04 +18 +60 +00 +14 +08 +00 +00 +ENDCHAR +STARTCHAR uni0696 +ENCODING 1686 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +04 +02 +12 +04 +18 +62 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0697 +ENCODING 1687 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +14 +00 +00 +04 +02 +02 +04 +18 +60 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii57508 +ENCODING 1688 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +08 +00 +14 +00 +00 +04 +02 +02 +04 +18 +60 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0699 +ENCODING 1689 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +14 +00 +14 +00 +00 +04 +02 +02 +04 +18 +60 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni069A +ENCODING 1690 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +04 +00 +01 +15 +88 +88 +8A +70 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni069B +ENCODING 1691 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +01 +15 +88 +88 +90 +65 +00 +02 +00 +00 +00 +ENDCHAR +STARTCHAR uni069C +ENCODING 1692 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +04 +00 +0A +00 +01 +15 +88 +88 +90 +65 +00 +02 +00 +00 +00 +ENDCHAR +STARTCHAR uni069D +ENCODING 1693 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +06 +09 +31 +9E +88 +90 +65 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni069E +ENCODING 1694 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +04 +00 +0A +00 +06 +09 +31 +9E +88 +88 +70 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni069F +ENCODING 1695 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +04 +00 +2A +20 +20 +2C +32 +A2 +7C +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni06A0 +ENCODING 1696 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +20 +00 +50 +00 +70 +80 +8C +70 +40 +80 +80 +80 +41 +3E +00 +00 +ENDCHAR +STARTCHAR uni06A1 +ENCODING 1697 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +06 +49 +85 +83 +7E +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni06A2 +ENCODING 1698 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +06 +49 +85 +83 +7E +00 +02 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni06A3 +ENCODING 1699 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +04 +00 +06 +49 +85 +83 +7E +00 +08 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii57505 +ENCODING 1700 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +04 +00 +0A +00 +06 +49 +85 +83 +7E +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni06A5 +ENCODING 1701 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +06 +49 +85 +83 +7E +00 +0A +00 +04 +00 +00 +00 +ENDCHAR +STARTCHAR uni06A6 +ENCODING 1702 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +0A +00 +0A +00 +06 +49 +85 +83 +7E +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni06A7 +ENCODING 1703 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +04 +00 +06 +09 +09 +47 +81 +81 +81 +42 +3C +00 +00 +00 +ENDCHAR +STARTCHAR uni06A8 +ENCODING 1704 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +04 +00 +0A +00 +06 +09 +09 +47 +81 +81 +81 +42 +3C +00 +00 +00 +ENDCHAR +STARTCHAR uni06A9 +ENCODING 1705 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +01 +02 +04 +08 +44 +82 +82 +7C +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni06AA +ENCODING 1706 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +18 +20 +40 +3E +01 +81 +7E +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni06AB +ENCODING 1707 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +01 +02 +05 +0B +48 +84 +82 +7C +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni06AC +ENCODING 1708 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +04 +00 +19 +21 +19 +21 +01 +81 +7E +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni06AD +ENCODING 1709 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +10 +00 +29 +01 +19 +21 +19 +A1 +7E +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni06AE +ENCODING 1710 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +19 +21 +19 +21 +01 +81 +7E +00 +14 +00 +08 +00 +00 +00 +ENDCHAR +STARTCHAR afii57509 +ENCODING 1711 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +04 +09 +12 +04 +08 +44 +82 +82 +7C +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni06B0 +ENCODING 1712 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +04 +09 +12 +05 +0B +48 +84 +82 +7C +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni06B1 +ENCODING 1713 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +A4 +09 +12 +04 +08 +44 +82 +82 +7C +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni06B2 +ENCODING 1714 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +04 +09 +12 +04 +08 +44 +82 +82 +7C +00 +14 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni06B3 +ENCODING 1715 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +04 +09 +12 +04 +08 +44 +82 +82 +7C +00 +08 +00 +08 +00 +00 +00 +ENDCHAR +STARTCHAR uni06B4 +ENCODING 1716 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +44 +09 +A2 +04 +08 +44 +82 +82 +7C +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni06B5 +ENCODING 1717 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +14 +08 +02 +02 +02 +02 +42 +82 +82 +84 +78 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni06B6 +ENCODING 1718 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +08 +02 +02 +02 +02 +02 +42 +82 +82 +84 +78 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni06B7 +ENCODING 1719 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +10 +02 +2A +02 +02 +02 +42 +82 +82 +84 +78 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni06B8 +ENCODING 1720 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +02 +02 +02 +02 +02 +42 +82 +82 +84 +78 +00 +14 +00 +08 +00 +ENDCHAR +STARTCHAR uni06B9 +ENCODING 1721 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +08 +00 +00 +00 +41 +81 +81 +81 +42 +3C +00 +00 +04 +00 +00 +ENDCHAR +STARTCHAR afii57514 +ENCODING 1722 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +41 +81 +81 +81 +42 +3C +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni06BB +ENCODING 1723 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +10 +1C +14 +38 +00 +41 +81 +81 +81 +42 +3C +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni06BC +ENCODING 1724 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +08 +00 +00 +41 +81 +81 +81 +42 +3C +08 +14 +08 +00 +00 +ENDCHAR +STARTCHAR uni06BD +ENCODING 1725 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +08 +00 +14 +00 +00 +41 +81 +81 +81 +42 +3C +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni06BE +ENCODING 1726 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +10 +38 +4C +52 +32 +3C +40 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni06BF +ENCODING 1727 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +10 +00 +70 +8F +30 +40 +94 +80 +88 +41 +3E +00 +00 +00 +ENDCHAR +STARTCHAR uni06C0 +ENCODING 1728 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +38 +40 +38 +40 +18 +24 +22 +22 +1C +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni06C1 +ENCODING 1729 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +0C +13 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni06C2 +ENCODING 1730 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +38 +40 +38 +40 +00 +0C +13 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni06C3 +ENCODING 1731 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +14 +00 +00 +00 +0C +13 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni06C4 +ENCODING 1732 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +0C +12 +0E +12 +2C +18 +60 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni06C5 +ENCODING 1733 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +0C +12 +0E +02 +3C +18 +60 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni06C6 +ENCODING 1734 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +14 +08 +00 +00 +0C +12 +0E +02 +04 +18 +60 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni06C7 +ENCODING 1735 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +10 +28 +18 +10 +20 +0C +12 +0E +02 +04 +18 +60 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni06C8 +ENCODING 1736 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +08 +08 +08 +08 +00 +0C +12 +0E +02 +04 +18 +60 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni06C9 +ENCODING 1737 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +08 +14 +00 +00 +0C +12 +0E +02 +04 +18 +60 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni06CA +ENCODING 1738 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +14 +00 +00 +0C +12 +0E +02 +04 +18 +60 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni06CB +ENCODING 1739 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +08 +00 +14 +00 +00 +0C +12 +0E +02 +04 +18 +60 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni06CC +ENCODING 1740 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +07 +08 +88 +86 +81 +81 +7E +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni06CD +ENCODING 1741 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +20 +47 +88 +08 +86 +81 +81 +7E +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni06CE +ENCODING 1742 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +50 +20 +07 +08 +88 +86 +81 +81 +7E +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni06CF +ENCODING 1743 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +08 +00 +00 +0C +12 +0E +02 +04 +18 +60 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni06D0 +ENCODING 1744 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +07 +08 +88 +86 +81 +82 +7C +00 +08 +00 +08 +ENDCHAR +STARTCHAR uni06D1 +ENCODING 1745 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +07 +08 +88 +86 +81 +82 +7C +00 +14 +00 +08 +ENDCHAR +STARTCHAR afii57519 +ENCODING 1746 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +08 +14 +60 +80 +FE +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni06D3 +ENCODING 1747 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +60 +80 +60 +80 +08 +14 +60 +80 +FE +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni06D4 +ENCODING 1748 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +3C +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii57534 +ENCODING 1749 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +18 +24 +22 +22 +1C +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni06D6 +ENCODING 1750 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +40 +40 +43 +55 +7E +80 +7C +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni06D7 +ENCODING 1751 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +2A +20 +26 +2A +7C +80 +7C +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni06D8 +ENCODING 1752 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +0C +0E +1C +60 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni06D9 +ENCODING 1753 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +14 +14 +08 +14 +18 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni06DA +ENCODING 1754 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +18 +2C +10 +28 +22 +1C +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni06DB +ENCODING 1755 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +08 +00 +14 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni06DC +ENCODING 1756 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +15 +8A +90 +60 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni06DD +ENCODING 1757 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +5A +A5 +66 +5B +81 +81 +81 +81 +81 +81 +5A +66 +A5 +5A +00 +ENDCHAR +STARTCHAR uni06DE +ENCODING 1758 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +18 +66 +42 +42 +81 +99 +99 +81 +42 +42 +66 +18 +00 +00 +ENDCHAR +STARTCHAR uni06DF +ENCODING 1759 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +08 +1C +08 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni06E0 +ENCODING 1760 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +18 +18 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni06E1 +ENCODING 1761 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +18 +26 +08 +70 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni06E2 +ENCODING 1762 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +0C +0C +10 +10 +10 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni06E3 +ENCODING 1763 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +15 +8A +90 +60 +ENDCHAR +STARTCHAR uni06E4 +ENCODING 1764 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +32 +2C +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni06E5 +ENCODING 1765 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +08 +14 +0C +04 +08 +30 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni06E6 +ENCODING 1766 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +10 +30 +40 +3E +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni06E7 +ENCODING 1767 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +10 +30 +40 +3E +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni06E8 +ENCODING 1768 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +08 +22 +22 +1C +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni06E9 +ENCODING 1769 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +10 +28 +54 +AA +92 +54 +54 +54 +54 +54 +54 +54 +82 +FE +00 +00 +ENDCHAR +STARTCHAR uni06EA +ENCODING 1770 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +08 +14 +22 +14 +08 +ENDCHAR +STARTCHAR uni06EB +ENCODING 1771 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +08 +14 +22 +14 +08 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni06EC +ENCODING 1772 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +18 +3C +3C +18 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni06ED +ENCODING 1773 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +0C +0C +10 +10 +10 +ENDCHAR +STARTCHAR uni06F0 +ENCODING 1776 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +38 +44 +44 +38 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni06F1 +ENCODING 1777 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +20 +70 +70 +38 +18 +18 +08 +08 +08 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni06F2 +ENCODING 1778 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +44 +FC +F8 +60 +30 +30 +10 +10 +10 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni06F3 +ENCODING 1779 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +4A +FE +F4 +60 +30 +30 +10 +10 +10 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni06F4 +ENCODING 1780 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +4E +F0 +FE +7C +30 +30 +10 +10 +10 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni06F5 +ENCODING 1781 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +30 +38 +2C +44 +42 +82 +92 +FE +6C +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni06F6 +ENCODING 1782 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +18 +3C +60 +7E +3C +30 +60 +40 +80 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni06F7 +ENCODING 1783 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +82 +C6 +C6 +6C +28 +38 +10 +10 +10 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni06F8 +ENCODING 1784 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +10 +10 +10 +38 +28 +6C +C6 +C6 +82 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni06F9 +ENCODING 1785 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +70 +F8 +88 +F8 +78 +08 +0C +0E +06 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni06FA +ENCODING 1786 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +08 +00 +14 +00 +01 +15 +88 +88 +88 +72 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni06FB +ENCODING 1787 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +04 +00 +06 +09 +31 +9E +88 +88 +72 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni06FC +ENCODING 1788 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +40 +00 +00 +70 +80 +8C +70 +40 +80 +88 +80 +41 +3E +00 +00 +ENDCHAR +STARTCHAR uni06FD +ENCODING 1789 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +18 +24 +20 +1E +20 +00 +14 +14 +14 +14 +00 +00 +ENDCHAR +STARTCHAR uni06FE +ENCODING 1790 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +0C +12 +12 +3C +40 +54 +54 +54 +54 +40 +00 +00 +ENDCHAR +STARTCHAR m +ENCODING 4307 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +6C +92 +92 +92 +92 +92 +4C +30 +4C +02 +00 +ENDCHAR +STARTCHAR m +ENCODING 4311 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +6C +92 +92 +92 +92 +92 +64 +00 +00 +00 +00 +ENDCHAR +STARTCHAR m +ENCODING 4314 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +54 +AA +AA +AA +82 +82 +40 +30 +4C +02 +00 +ENDCHAR +STARTCHAR m +ENCODING 4317 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +6C +92 +92 +92 +82 +82 +44 +00 +00 +00 +00 +ENDCHAR +STARTCHAR m +ENCODING 4326 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +6C +92 +92 +92 +82 +82 +40 +30 +4C +02 +00 +ENDCHAR +STARTCHAR uni1E00 +ENCODING 7680 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +10 +38 +6C +C6 +C6 +FE +C6 +C6 +C6 +C6 +00 +38 +6C +38 +ENDCHAR +STARTCHAR uni1E01 +ENCODING 7681 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +78 +0C +7C +CC +CC +CC +76 +00 +38 +6C +38 +ENDCHAR +STARTCHAR uni1E02 +ENCODING 7682 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +18 +18 +00 +FC +66 +66 +66 +7C +66 +66 +66 +FC +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1E03 +ENCODING 7683 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +0C +EC +60 +60 +78 +6C +66 +66 +66 +66 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1E04 +ENCODING 7684 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +FC +66 +66 +66 +7C +66 +66 +66 +66 +FC +00 +18 +18 +00 +ENDCHAR +STARTCHAR uni1E05 +ENCODING 7685 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +E0 +60 +60 +78 +6C +66 +66 +66 +66 +7C +00 +18 +18 +00 +ENDCHAR +STARTCHAR uni1E06 +ENCODING 7686 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +FC +66 +66 +66 +7C +66 +66 +66 +66 +FC +00 +7C +00 +00 +ENDCHAR +STARTCHAR uni1E07 +ENCODING 7687 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +E0 +60 +60 +78 +6C +66 +66 +66 +66 +7C +00 +7C +00 +00 +ENDCHAR +STARTCHAR uni1E08 +ENCODING 7688 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +0C +18 +00 +3C +66 +C2 +C0 +C0 +C0 +C2 +66 +3C +18 +0C +38 +00 +ENDCHAR +STARTCHAR uni1E09 +ENCODING 7689 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +0C +18 +00 +7C +C6 +C0 +C0 +C0 +C6 +7C +18 +0C +38 +00 +ENDCHAR +STARTCHAR uni1E0A +ENCODING 7690 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +30 +30 +00 +F8 +6C +66 +66 +66 +66 +66 +6C +F8 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1E0B +ENCODING 7691 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +60 +60 +0C +0C +0C +3C +6C +CC +CC +CC +CC +76 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1E0C +ENCODING 7692 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +F8 +6C +66 +66 +66 +66 +66 +66 +6C +F8 +00 +30 +30 +00 +ENDCHAR +STARTCHAR uni1E0D +ENCODING 7693 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +1C +0C +0C +3C +6C +CC +CC +CC +CC +76 +00 +30 +30 +00 +ENDCHAR +STARTCHAR uni1E0E +ENCODING 7694 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +F8 +6C +66 +66 +66 +66 +66 +66 +6C +F8 +00 +7C +00 +00 +ENDCHAR +STARTCHAR uni1E0F +ENCODING 7695 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +1C +0C +0C +3C +6C +CC +CC +CC +CC +76 +00 +7C +00 +00 +ENDCHAR +STARTCHAR uni1E10 +ENCODING 7696 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +F8 +6C +66 +66 +66 +66 +66 +66 +6C +F8 +30 +18 +70 +00 +ENDCHAR +STARTCHAR uni1E11 +ENCODING 7697 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +1C +0C +0C +3C +6C +CC +CC +CC +CC +76 +30 +18 +70 +00 +ENDCHAR +STARTCHAR uni1E12 +ENCODING 7698 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +F8 +6C +66 +66 +66 +66 +66 +66 +6C +F8 +10 +38 +6C +00 +ENDCHAR +STARTCHAR uni1E13 +ENCODING 7699 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +1C +0C +0C +3C +6C +CC +CC +CC +CC +76 +10 +38 +6C +00 +ENDCHAR +STARTCHAR uni1E14 +ENCODING 7700 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +60 +30 +00 +7C +00 +FE +62 +68 +78 +68 +62 +FE +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1E15 +ENCODING 7701 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +60 +30 +00 +7C +00 +7C +C6 +FE +C0 +C0 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1E16 +ENCODING 7702 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +0C +18 +00 +7C +00 +FE +62 +68 +78 +68 +62 +FE +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1E17 +ENCODING 7703 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +0C +18 +00 +7C +00 +7C +C6 +FE +C0 +C0 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1E18 +ENCODING 7704 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +FE +66 +62 +68 +78 +68 +60 +62 +66 +FE +10 +38 +6C +00 +ENDCHAR +STARTCHAR uni1E19 +ENCODING 7705 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +7C +C6 +FE +C0 +C0 +C6 +7C +10 +38 +6C +00 +ENDCHAR +STARTCHAR uni1E1A +ENCODING 7706 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +FE +66 +62 +68 +78 +68 +60 +62 +66 +FE +00 +76 +DC +00 +ENDCHAR +STARTCHAR uni1E1B +ENCODING 7707 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +7C +C6 +FE +C0 +C0 +C6 +7C +00 +76 +DC +00 +ENDCHAR +STARTCHAR uni1E1C +ENCODING 7708 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +6C +38 +00 +FE +66 +62 +68 +78 +68 +62 +66 +FE +18 +0C +38 +00 +ENDCHAR +STARTCHAR uni1E1D +ENCODING 7709 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +6C +38 +00 +7C +C6 +FE +C0 +C0 +C6 +7C +18 +0C +38 +00 +ENDCHAR +STARTCHAR uni1E1E +ENCODING 7710 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +18 +18 +00 +FE +66 +62 +68 +78 +68 +60 +60 +F0 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1E1F +ENCODING 7711 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +30 +30 +00 +38 +6C +64 +F0 +60 +60 +60 +60 +F0 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1E20 +ENCODING 7712 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +7C +00 +3C +66 +C2 +C0 +DE +C6 +C6 +66 +3A +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1E21 +ENCODING 7713 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +7C +00 +76 +CC +CC +CC +CC +CC +7C +0C +CC +78 +00 +ENDCHAR +STARTCHAR uni1E22 +ENCODING 7714 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +30 +30 +00 +C6 +C6 +C6 +C6 +FE +C6 +C6 +C6 +C6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1E23 +ENCODING 7715 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +0C +0C +E0 +60 +60 +6C +76 +66 +66 +66 +66 +E6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1E24 +ENCODING 7716 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +C6 +C6 +C6 +C6 +FE +C6 +C6 +C6 +C6 +C6 +00 +30 +30 +00 +ENDCHAR +STARTCHAR uni1E25 +ENCODING 7717 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +E0 +60 +60 +6C +76 +66 +66 +66 +66 +E6 +00 +18 +18 +00 +ENDCHAR +STARTCHAR uni1E26 +ENCODING 7718 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +6C +6C +00 +C6 +C6 +C6 +C6 +FE +C6 +C6 +C6 +C6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1E27 +ENCODING 7719 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +6C +6C +00 +E0 +60 +6C +76 +66 +66 +66 +66 +E6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1E28 +ENCODING 7720 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +C6 +C6 +C6 +C6 +FE +C6 +C6 +C6 +C6 +C6 +60 +30 +E0 +00 +ENDCHAR +STARTCHAR uni1E29 +ENCODING 7721 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +E0 +60 +60 +6C +76 +66 +66 +66 +66 +E6 +30 +18 +70 +00 +ENDCHAR +STARTCHAR uni1E2A +ENCODING 7722 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +C6 +C6 +C6 +C6 +FE +C6 +C6 +C6 +C6 +C6 +00 +6C +38 +00 +ENDCHAR +STARTCHAR uni1E2B +ENCODING 7723 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +E0 +60 +60 +6C +76 +66 +66 +66 +66 +E6 +00 +6C +38 +00 +ENDCHAR +STARTCHAR uni1E2C +ENCODING 7724 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +3C +18 +18 +18 +18 +18 +18 +18 +18 +3C +00 +76 +DC +00 +ENDCHAR +STARTCHAR uni1E2D +ENCODING 7725 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +18 +18 +00 +38 +18 +18 +18 +18 +18 +3C +00 +76 +DC +00 +ENDCHAR +STARTCHAR uni1E2E +ENCODING 7726 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +0C +18 +66 +00 +3C +18 +18 +18 +18 +18 +18 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1E2F +ENCODING 7727 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +0C +18 +66 +66 +00 +38 +18 +18 +18 +18 +18 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1E30 +ENCODING 7728 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +18 +18 +00 +E6 +66 +66 +6C +78 +6C +66 +66 +E6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1E31 +ENCODING 7729 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +0C +EC +60 +60 +66 +6C +78 +78 +6C +66 +E6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1E32 +ENCODING 7730 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +E6 +66 +66 +6C +78 +78 +6C +66 +66 +E6 +00 +18 +18 +00 +ENDCHAR +STARTCHAR uni1E33 +ENCODING 7731 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +E0 +60 +60 +66 +6C +78 +78 +6C +66 +E6 +00 +18 +18 +00 +ENDCHAR +STARTCHAR uni1E34 +ENCODING 7732 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +E6 +66 +66 +6C +78 +78 +6C +66 +66 +E6 +00 +7C +00 +00 +ENDCHAR +STARTCHAR uni1E35 +ENCODING 7733 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +E0 +60 +60 +66 +6C +78 +78 +6C +66 +E6 +00 +7C +00 +00 +ENDCHAR +STARTCHAR uni1E36 +ENCODING 7734 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +F0 +60 +60 +60 +60 +60 +60 +62 +66 +FE +00 +18 +18 +00 +ENDCHAR +STARTCHAR uni1E37 +ENCODING 7735 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +38 +18 +18 +18 +18 +18 +18 +18 +18 +3C +00 +18 +18 +00 +ENDCHAR +STARTCHAR uni1E38 +ENCODING 7736 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +7C +00 +F0 +60 +60 +60 +60 +60 +62 +66 +FE +00 +18 +18 +00 +ENDCHAR +STARTCHAR uni1E39 +ENCODING 7737 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +7C +00 +38 +18 +18 +18 +18 +18 +18 +18 +3C +00 +18 +18 +00 +ENDCHAR +STARTCHAR uni1E3A +ENCODING 7738 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +F0 +60 +60 +60 +60 +60 +60 +62 +66 +FE +00 +7C +00 +00 +ENDCHAR +STARTCHAR uni1E3B +ENCODING 7739 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +38 +18 +18 +18 +18 +18 +18 +18 +18 +3C +00 +7E +00 +00 +ENDCHAR +STARTCHAR uni1E3C +ENCODING 7740 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +F0 +60 +60 +60 +60 +60 +60 +62 +66 +FE +10 +38 +6C +00 +ENDCHAR +STARTCHAR uni1E3D +ENCODING 7741 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +38 +18 +18 +18 +18 +18 +18 +18 +18 +3C +10 +38 +6C +00 +ENDCHAR +STARTCHAR uni1E3E +ENCODING 7742 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +0C +18 +00 +C6 +EE +FE +FE +D6 +C6 +C6 +C6 +C6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1E3F +ENCODING 7743 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +0C +18 +00 +EC +FE +D6 +D6 +D6 +D6 +C6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1E40 +ENCODING 7744 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +30 +30 +00 +C6 +EE +FE +FE +D6 +C6 +C6 +C6 +C6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1E41 +ENCODING 7745 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +30 +30 +00 +EC +FE +D6 +D6 +D6 +D6 +C6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1E42 +ENCODING 7746 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +C6 +EE +FE +FE +D6 +C6 +C6 +C6 +C6 +C6 +00 +30 +30 +00 +ENDCHAR +STARTCHAR uni1E43 +ENCODING 7747 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +EC +FE +D6 +D6 +D6 +D6 +C6 +00 +30 +30 +00 +ENDCHAR +STARTCHAR uni1E44 +ENCODING 7748 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +30 +30 +00 +C6 +E6 +F6 +FE +DE +CE +C6 +C6 +C6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1E45 +ENCODING 7749 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +18 +18 +00 +DC +66 +66 +66 +66 +66 +66 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1E46 +ENCODING 7750 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +C6 +E6 +F6 +FE +DE +CE +C6 +C6 +C6 +C6 +00 +30 +30 +00 +ENDCHAR +STARTCHAR uni1E47 +ENCODING 7751 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +DC +66 +66 +66 +66 +66 +66 +00 +18 +18 +00 +ENDCHAR +STARTCHAR uni1E48 +ENCODING 7752 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +C6 +E6 +F6 +FE +DE +CE +C6 +C6 +C6 +C6 +00 +7C +00 +00 +ENDCHAR +STARTCHAR uni1E49 +ENCODING 7753 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +DC +66 +66 +66 +66 +66 +66 +00 +7C +00 +00 +ENDCHAR +STARTCHAR uni1E4A +ENCODING 7754 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +C6 +E6 +F6 +FE +DE +CE +C6 +C6 +C6 +C6 +10 +38 +6C +00 +ENDCHAR +STARTCHAR uni1E4B +ENCODING 7755 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +DC +66 +66 +66 +66 +66 +66 +10 +38 +6C +00 +ENDCHAR +STARTCHAR uni1E4C +ENCODING 7756 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +0C +18 +72 +9C +7C +C6 +C6 +C6 +C6 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1E4D +ENCODING 7757 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +0C +18 +76 +DC +00 +7C +C6 +C6 +C6 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1E4E +ENCODING 7758 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +6C +00 +72 +9C +7C +C6 +C6 +C6 +C6 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1E4F +ENCODING 7759 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +6C +00 +76 +DC +00 +7C +C6 +C6 +C6 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1E50 +ENCODING 7760 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +60 +30 +7C +00 +7C +C6 +C6 +C6 +C6 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1E51 +ENCODING 7761 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +60 +30 +00 +7C +00 +7C +C6 +C6 +C6 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1E52 +ENCODING 7762 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +0C +18 +7C +00 +7C +C6 +C6 +C6 +C6 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1E53 +ENCODING 7763 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +0C +18 +00 +7C +00 +7C +C6 +C6 +C6 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1E54 +ENCODING 7764 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +0C +18 +00 +FC +66 +66 +66 +7C +60 +60 +60 +F0 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1E55 +ENCODING 7765 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +0C +18 +00 +DC +66 +66 +66 +66 +66 +7C +60 +60 +F0 +00 +ENDCHAR +STARTCHAR uni1E56 +ENCODING 7766 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +18 +18 +00 +FC +66 +66 +66 +7C +60 +60 +60 +F0 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1E57 +ENCODING 7767 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +18 +18 +00 +DC +66 +66 +66 +66 +66 +7C +60 +60 +F0 +00 +ENDCHAR +STARTCHAR uni1E58 +ENCODING 7768 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +18 +18 +00 +FC +66 +66 +66 +7C +6C +66 +66 +E6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1E59 +ENCODING 7769 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +18 +18 +00 +DC +76 +66 +60 +60 +60 +F0 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1E5A +ENCODING 7770 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +FC +66 +66 +66 +7C +6C +66 +66 +66 +E6 +00 +18 +18 +00 +ENDCHAR +STARTCHAR uni1E5B +ENCODING 7771 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +DC +76 +66 +60 +60 +60 +F0 +00 +18 +18 +00 +ENDCHAR +STARTCHAR uni1E5C +ENCODING 7772 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +7C +00 +FC +66 +66 +66 +7C +6C +66 +66 +E6 +00 +18 +18 +00 +ENDCHAR +STARTCHAR uni1E5D +ENCODING 7773 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +7C +00 +DC +76 +66 +60 +60 +60 +F0 +00 +18 +18 +00 +ENDCHAR +STARTCHAR uni1E5E +ENCODING 7774 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +FC +66 +66 +66 +7C +6C +66 +66 +66 +E6 +00 +7C +00 +00 +ENDCHAR +STARTCHAR uni1E5F +ENCODING 7775 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +DC +76 +66 +60 +60 +60 +F0 +00 +7C +00 +00 +ENDCHAR +STARTCHAR uni1E60 +ENCODING 7776 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +30 +30 +00 +7C +C6 +C6 +60 +38 +0C +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1E61 +ENCODING 7777 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +30 +30 +00 +7C +C6 +60 +38 +0C +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1E62 +ENCODING 7778 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +7C +C6 +C6 +60 +38 +0C +06 +C6 +C6 +7C +00 +30 +30 +00 +ENDCHAR +STARTCHAR uni1E63 +ENCODING 7779 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +7C +C6 +60 +38 +0C +C6 +7C +00 +30 +30 +00 +ENDCHAR +STARTCHAR uni1E64 +ENCODING 7780 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +60 +6C +18 +00 +7C +C6 +C6 +70 +1C +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1E65 +ENCODING 7781 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +60 +60 +0C +18 +00 +7C +C6 +60 +38 +0C +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1E66 +ENCODING 7782 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +30 +44 +38 +10 +7C +C6 +C6 +70 +1C +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1E67 +ENCODING 7783 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +30 +30 +44 +38 +10 +7C +C6 +60 +38 +0C +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1E68 +ENCODING 7784 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +30 +30 +00 +7C +C6 +C6 +60 +38 +0C +C6 +C6 +7C +00 +30 +30 +00 +ENDCHAR +STARTCHAR uni1E69 +ENCODING 7785 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +30 +30 +00 +7C +C6 +60 +38 +0C +C6 +7C +00 +30 +30 +00 +ENDCHAR +STARTCHAR uni1E6A +ENCODING 7786 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +18 +18 +00 +7E +7E +5A +18 +18 +18 +18 +18 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1E6B +ENCODING 7787 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +06 +16 +30 +30 +FC +30 +30 +30 +30 +36 +1C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1E6C +ENCODING 7788 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +7E +7E +5A +18 +18 +18 +18 +18 +18 +3C +00 +18 +18 +00 +ENDCHAR +STARTCHAR uni1E6D +ENCODING 7789 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +10 +30 +30 +FC +30 +30 +30 +30 +36 +1C +00 +18 +18 +00 +ENDCHAR +STARTCHAR uni1E6E +ENCODING 7790 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +7E +7E +5A +18 +18 +18 +18 +18 +18 +3C +00 +7E +00 +00 +ENDCHAR +STARTCHAR uni1E6F +ENCODING 7791 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +10 +30 +30 +FC +30 +30 +30 +30 +36 +1C +00 +7E +00 +00 +ENDCHAR +STARTCHAR uni1E70 +ENCODING 7792 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +7E +7E +5A +18 +18 +18 +18 +18 +18 +3C +10 +38 +6C +00 +ENDCHAR +STARTCHAR uni1E71 +ENCODING 7793 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +10 +30 +30 +FC +30 +30 +30 +30 +36 +1C +08 +1C +36 +00 +ENDCHAR +STARTCHAR uni1E72 +ENCODING 7794 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +C6 +C6 +C6 +C6 +C6 +C6 +C6 +C6 +C6 +7C +00 +6C +6C +00 +ENDCHAR +STARTCHAR uni1E73 +ENCODING 7795 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +CC +CC +CC +CC +CC +CC +76 +00 +6C +6C +00 +ENDCHAR +STARTCHAR uni1E74 +ENCODING 7796 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +C6 +C6 +C6 +C6 +C6 +C6 +C6 +C6 +C6 +7C +00 +76 +DC +00 +ENDCHAR +STARTCHAR uni1E75 +ENCODING 7797 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +CC +CC +CC +CC +CC +CC +76 +00 +76 +DC +00 +ENDCHAR +STARTCHAR uni1E76 +ENCODING 7798 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +C6 +C6 +C6 +C6 +C6 +C6 +C6 +C6 +C6 +7C +10 +38 +6C +00 +ENDCHAR +STARTCHAR uni1E77 +ENCODING 7799 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +CC +CC +CC +CC +CC +CC +76 +10 +38 +6C +00 +ENDCHAR +STARTCHAR uni1E78 +ENCODING 7800 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +0C +18 +72 +9C +00 +C6 +C6 +C6 +C6 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1E79 +ENCODING 7801 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +0C +18 +76 +DC +00 +CC +CC +CC +CC +CC +CC +76 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1E7A +ENCODING 7802 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +6C +00 +7C +00 +C6 +C6 +C6 +C6 +C6 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1E7B +ENCODING 7803 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +CC +CC +00 +FC +00 +CC +CC +CC +CC +CC +CC +76 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1E7C +ENCODING 7804 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +76 +DC +00 +C6 +C6 +C6 +C6 +C6 +C6 +6C +38 +10 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1E7D +ENCODING 7805 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +76 +DC +00 +66 +66 +66 +66 +66 +3C +18 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1E7E +ENCODING 7806 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +C6 +C6 +C6 +C6 +C6 +C6 +C6 +6C +38 +10 +00 +30 +30 +00 +ENDCHAR +STARTCHAR uni1E7F +ENCODING 7807 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +66 +66 +66 +66 +66 +3C +18 +00 +18 +18 +00 +ENDCHAR +STARTCHAR Wgrave +ENCODING 7808 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +60 +30 +00 +C6 +C6 +C6 +D6 +D6 +D6 +FE +EE +6C +00 +00 +00 +00 +ENDCHAR +STARTCHAR wgrave +ENCODING 7809 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +60 +30 +00 +C6 +C6 +D6 +D6 +D6 +FE +6C +00 +00 +00 +00 +ENDCHAR +STARTCHAR Wacute +ENCODING 7810 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +0C +18 +00 +C6 +C6 +C6 +D6 +D6 +D6 +FE +EE +6C +00 +00 +00 +00 +ENDCHAR +STARTCHAR wacute +ENCODING 7811 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +0C +18 +00 +C6 +C6 +D6 +D6 +D6 +FE +6C +00 +00 +00 +00 +ENDCHAR +STARTCHAR Wdieresis +ENCODING 7812 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +6C +6C +00 +C6 +C6 +C6 +D6 +D6 +D6 +FE +EE +6C +00 +00 +00 +00 +ENDCHAR +STARTCHAR wdieresis +ENCODING 7813 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +6C +6C +00 +C6 +C6 +D6 +D6 +D6 +FE +6C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1E86 +ENCODING 7814 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +30 +30 +00 +C6 +C6 +C6 +D6 +D6 +D6 +FE +EE +6C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1E87 +ENCODING 7815 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +30 +30 +00 +C6 +C6 +D6 +D6 +D6 +FE +6C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1E88 +ENCODING 7816 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +C6 +C6 +C6 +C6 +D6 +D6 +D6 +FE +EE +6C +00 +30 +30 +00 +ENDCHAR +STARTCHAR uni1E89 +ENCODING 7817 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +C6 +C6 +D6 +D6 +D6 +FE +6C +00 +30 +30 +00 +ENDCHAR +STARTCHAR uni1E8A +ENCODING 7818 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +30 +30 +00 +C6 +C6 +6C +7C +38 +7C +6C +C6 +C6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1E8B +ENCODING 7819 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +30 +30 +00 +C6 +6C +38 +38 +38 +6C +C6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1E8C +ENCODING 7820 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +6C +6C +00 +C6 +C6 +6C +7C +38 +7C +6C +C6 +C6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1E8D +ENCODING 7821 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +6C +6C +00 +C6 +6C +38 +38 +38 +6C +C6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1E8E +ENCODING 7822 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +18 +18 +00 +66 +66 +66 +3C +18 +18 +18 +18 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1E8F +ENCODING 7823 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +30 +30 +00 +C6 +C6 +C6 +C6 +C6 +C6 +7E +06 +0C +F8 +00 +ENDCHAR +STARTCHAR uni1E90 +ENCODING 7824 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +10 +38 +44 +FE +C6 +8C +18 +30 +60 +C2 +C6 +FE +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1E91 +ENCODING 7825 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +10 +38 +6C +00 +FE +CC +18 +30 +60 +C6 +FE +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1E92 +ENCODING 7826 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +FE +C6 +86 +0C +18 +30 +60 +C2 +C6 +FE +00 +30 +30 +00 +ENDCHAR +STARTCHAR uni1E93 +ENCODING 7827 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +FE +CC +18 +30 +60 +C6 +FE +00 +30 +30 +00 +ENDCHAR +STARTCHAR uni1E94 +ENCODING 7828 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +FE +C6 +86 +0C +18 +30 +60 +C2 +C6 +FE +00 +7C +00 +00 +ENDCHAR +STARTCHAR uni1E95 +ENCODING 7829 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +FE +CC +18 +30 +60 +C6 +FE +00 +7C +00 +00 +ENDCHAR +STARTCHAR uni1E96 +ENCODING 7830 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +E0 +60 +60 +6C +76 +66 +66 +66 +66 +E6 +00 +7C +00 +00 +ENDCHAR +STARTCHAR uni1E97 +ENCODING 7831 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +6C +6C +00 +10 +30 +FC +30 +30 +30 +30 +36 +1C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1E98 +ENCODING 7832 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +38 +6C +38 +00 +C6 +C6 +D6 +D6 +D6 +FE +6C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1E99 +ENCODING 7833 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +38 +6C +38 +00 +C6 +C6 +C6 +C6 +C6 +C6 +7E +06 +0C +F8 +00 +ENDCHAR +STARTCHAR uni1E9A +ENCODING 7834 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +18 +0C +18 +00 +78 +0C +7C +CC +CC +CC +76 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1E9B +ENCODING 7835 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +30 +30 +00 +38 +6C +64 +60 +60 +60 +60 +60 +F0 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1EA0 +ENCODING 7840 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +10 +38 +6C +C6 +C6 +FE +C6 +C6 +C6 +C6 +00 +30 +30 +00 +ENDCHAR +STARTCHAR uni1EA1 +ENCODING 7841 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +78 +0C +7C +CC +CC +CC +76 +00 +30 +30 +00 +ENDCHAR +STARTCHAR uni1EA2 +ENCODING 7842 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +38 +0C +18 +10 +38 +6C +C6 +C6 +FE +C6 +C6 +C6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1EA3 +ENCODING 7843 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +38 +0C +18 +00 +78 +0C +7C +CC +CC +CC +76 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1EA4 +ENCODING 7844 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +03 +16 +38 +6C +10 +38 +6C +C6 +C6 +FE +C6 +C6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1EA5 +ENCODING 7845 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +03 +16 +38 +6C +00 +78 +0C +7C +CC +CC +CC +76 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1EA6 +ENCODING 7846 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +C0 +68 +1C +36 +10 +38 +6C +C6 +C6 +FE +C6 +C6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1EA7 +ENCODING 7847 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +C0 +68 +1C +36 +00 +78 +0C +7C +CC +CC +CC +76 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1EA8 +ENCODING 7848 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +0E +13 +3A +6C +10 +38 +6C +C6 +C6 +FE +C6 +C6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1EA9 +ENCODING 7849 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +0E +13 +3A +6C +00 +78 +0C +7C +CC +CC +CC +76 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1EAA +ENCODING 7850 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +76 +DC +10 +28 +54 +38 +6C +C6 +C6 +FE +C6 +C6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1EAB +ENCODING 7851 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +76 +DC +10 +38 +44 +78 +0C +7C +CC +CC +CC +76 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1EAC +ENCODING 7852 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +10 +38 +6C +10 +38 +6C +C6 +C6 +FE +C6 +C6 +C6 +00 +30 +30 +00 +ENDCHAR +STARTCHAR uni1EAD +ENCODING 7853 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +10 +38 +6C +00 +78 +0C +7C +CC +CC +CC +76 +00 +30 +30 +00 +ENDCHAR +STARTCHAR uni1EAE +ENCODING 7854 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +0C +18 +44 +38 +10 +38 +6C +C6 +C6 +FE +C6 +C6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1EAF +ENCODING 7855 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +0C +18 +44 +38 +00 +78 +0C +7C +CC +CC +CC +76 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1EB0 +ENCODING 7856 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +60 +30 +44 +38 +10 +38 +6C +C6 +C6 +FE +C6 +C6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1EB1 +ENCODING 7857 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +60 +30 +44 +38 +00 +78 +0C +7C +CC +CC +CC +76 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1EB2 +ENCODING 7858 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +30 +08 +54 +38 +10 +38 +6C +C6 +C6 +FE +C6 +C6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1EB3 +ENCODING 7859 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +30 +08 +54 +38 +00 +78 +0C +7C +CC +CC +CC +76 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1EB4 +ENCODING 7860 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +72 +9C +44 +38 +10 +38 +6C +C6 +C6 +FE +C6 +C6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1EB5 +ENCODING 7861 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +72 +9C +44 +38 +00 +78 +0C +7C +CC +CC +CC +76 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1EB6 +ENCODING 7862 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +6C +38 +00 +10 +38 +6C +C6 +C6 +FE +C6 +C6 +C6 +00 +30 +30 +00 +ENDCHAR +STARTCHAR uni1EB7 +ENCODING 7863 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +6C +38 +00 +78 +0C +7C +CC +CC +CC +76 +00 +30 +30 +00 +ENDCHAR +STARTCHAR uni1EB8 +ENCODING 7864 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +FE +66 +62 +68 +78 +68 +60 +62 +66 +FE +00 +18 +18 +00 +ENDCHAR +STARTCHAR uni1EB9 +ENCODING 7865 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +7C +C6 +FE +C0 +C0 +C6 +7C +00 +30 +30 +00 +ENDCHAR +STARTCHAR uni1EBA +ENCODING 7866 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +38 +0C +18 +FE +66 +62 +68 +78 +68 +62 +66 +FE +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1EBB +ENCODING 7867 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +38 +0C +18 +00 +7C +C6 +FE +C0 +C0 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1EBC +ENCODING 7868 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +76 +DC +00 +FE +66 +62 +68 +78 +68 +62 +66 +FE +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1EBD +ENCODING 7869 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +76 +DC +00 +7C +C6 +FE +C0 +C0 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1EBE +ENCODING 7870 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +23 +76 +88 +FE +66 +62 +68 +78 +68 +62 +66 +FE +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1EBF +ENCODING 7871 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +03 +26 +70 +D8 +00 +7C +C6 +FE +C0 +C0 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1EC0 +ENCODING 7872 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +C4 +6E +11 +FE +66 +62 +68 +78 +68 +62 +66 +FE +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1EC1 +ENCODING 7873 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +C0 +64 +0E +1B +00 +7C +C6 +FE +C0 +C0 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1EC2 +ENCODING 7874 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +0E +13 +3A +6C +00 +FE +62 +68 +78 +68 +62 +FE +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1EC3 +ENCODING 7875 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +0E +13 +3A +6C +00 +7C +C6 +FE +C0 +C0 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1EC4 +ENCODING 7876 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +76 +DC +10 +38 +44 +FE +62 +68 +78 +68 +62 +FE +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1EC5 +ENCODING 7877 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +76 +DC +10 +38 +44 +7C +C6 +FE +C0 +C0 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1EC6 +ENCODING 7878 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +10 +38 +44 +FE +66 +62 +68 +78 +68 +62 +66 +FE +00 +18 +18 +00 +ENDCHAR +STARTCHAR uni1EC7 +ENCODING 7879 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +10 +38 +6C +00 +7C +C6 +FE +C0 +C0 +C6 +7C +00 +30 +30 +00 +ENDCHAR +STARTCHAR uni1EC8 +ENCODING 7880 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +38 +0C +18 +3C +18 +18 +18 +18 +18 +18 +18 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1EC9 +ENCODING 7881 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +38 +0C +18 +00 +38 +18 +18 +18 +18 +18 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1ECA +ENCODING 7882 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +3C +18 +18 +18 +18 +18 +18 +18 +18 +3C +00 +18 +18 +00 +ENDCHAR +STARTCHAR uni1ECB +ENCODING 7883 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +18 +18 +00 +38 +18 +18 +18 +18 +18 +3C +00 +18 +18 +00 +ENDCHAR +STARTCHAR uni1ECC +ENCODING 7884 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +7C +C6 +C6 +C6 +C6 +C6 +C6 +C6 +C6 +7C +00 +30 +30 +00 +ENDCHAR +STARTCHAR uni1ECD +ENCODING 7885 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +7C +C6 +C6 +C6 +C6 +C6 +7C +00 +30 +30 +00 +ENDCHAR +STARTCHAR uni1ECE +ENCODING 7886 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +38 +0C +18 +7C +C6 +C6 +C6 +C6 +C6 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1ECF +ENCODING 7887 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +38 +0C +18 +00 +7C +C6 +C6 +C6 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1ED0 +ENCODING 7888 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +23 +76 +88 +7C +C6 +C6 +C6 +C6 +C6 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1ED1 +ENCODING 7889 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +03 +26 +70 +D8 +00 +7C +C6 +C6 +C6 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1ED2 +ENCODING 7890 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +C4 +6E +11 +7C +C6 +C6 +C6 +C6 +C6 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1ED3 +ENCODING 7891 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +C0 +64 +0E +1B +00 +7C +C6 +C6 +C6 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1ED4 +ENCODING 7892 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +0E +13 +3A +44 +7C +C6 +C6 +C6 +C6 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1ED5 +ENCODING 7893 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +0E +13 +3A +6C +00 +7C +C6 +C6 +C6 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1ED6 +ENCODING 7894 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +76 +DC +10 +28 +44 +7C +C6 +C6 +C6 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1ED7 +ENCODING 7895 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +76 +DC +10 +38 +44 +7C +C6 +C6 +C6 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1ED8 +ENCODING 7896 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +10 +38 +44 +7C +C6 +C6 +C6 +C6 +C6 +C6 +C6 +7C +00 +30 +30 +00 +ENDCHAR +STARTCHAR uni1ED9 +ENCODING 7897 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +10 +38 +6C +00 +7C +C6 +C6 +C6 +C6 +C6 +7C +00 +30 +30 +00 +ENDCHAR +STARTCHAR uni1EDA +ENCODING 7898 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +18 +33 +03 +7A +CC +CC +CC +CC +CC +CC +CC +78 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1EDB +ENCODING 7899 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +1B +33 +06 +78 +CC +CC +CC +CC +CC +78 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1EDC +ENCODING 7900 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +60 +33 +03 +7A +CC +CC +CC +CC +CC +CC +CC +78 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1EDD +ENCODING 7901 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +63 +33 +06 +78 +CC +CC +CC +CC +CC +78 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1EDE +ENCODING 7902 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +70 +1B +33 +7A +CC +CC +CC +CC +CC +CC +CC +78 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1EDF +ENCODING 7903 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +70 +1B +33 +06 +78 +CC +CC +CC +CC +CC +78 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1EE0 +ENCODING 7904 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +68 +B3 +03 +7A +CC +CC +CC +CC +CC +CC +CC +78 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1EE1 +ENCODING 7905 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +68 +B3 +03 +06 +78 +CC +CC +CC +CC +CC +78 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1EE2 +ENCODING 7906 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +03 +03 +7A +CC +CC +CC +CC +CC +CC +CC +CC +78 +00 +30 +30 +00 +ENDCHAR +STARTCHAR uni1EE3 +ENCODING 7907 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +03 +03 +06 +78 +CC +CC +CC +CC +CC +78 +00 +30 +30 +00 +ENDCHAR +STARTCHAR uni1EE4 +ENCODING 7908 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +C6 +C6 +C6 +C6 +C6 +C6 +C6 +C6 +C6 +7C +00 +30 +30 +00 +ENDCHAR +STARTCHAR uni1EE5 +ENCODING 7909 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +CC +CC +CC +CC +CC +CC +76 +00 +30 +30 +00 +ENDCHAR +STARTCHAR uni1EE6 +ENCODING 7910 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +38 +0C +18 +C6 +C6 +C6 +C6 +C6 +C6 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1EE7 +ENCODING 7911 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +70 +18 +30 +00 +CC +CC +CC +CC +CC +CC +76 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1EE8 +ENCODING 7912 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +18 +33 +03 +CE +CC +CC +CC +CC +CC +CC +CC +78 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1EE9 +ENCODING 7913 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +1B +33 +06 +CC +CC +CC +CC +CC +CC +76 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1EEA +ENCODING 7914 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +60 +33 +03 +CE +CC +CC +CC +CC +CC +CC +CC +78 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1EEB +ENCODING 7915 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +63 +33 +06 +CC +CC +CC +CC +CC +CC +76 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1EEC +ENCODING 7916 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +70 +1B +33 +CE +CC +CC +CC +CC +CC +CC +CC +78 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1EED +ENCODING 7917 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +70 +1B +33 +06 +CC +CC +CC +CC +CC +CC +76 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1EEE +ENCODING 7918 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +68 +B3 +03 +CE +CC +CC +CC +CC +CC +CC +CC +78 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1EEF +ENCODING 7919 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +68 +B3 +03 +06 +CC +CC +CC +CC +CC +CC +76 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1EF0 +ENCODING 7920 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +03 +03 +CE +CC +CC +CC +CC +CC +CC +CC +CC +78 +00 +30 +30 +00 +ENDCHAR +STARTCHAR uni1EF1 +ENCODING 7921 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +03 +03 +06 +CC +CC +CC +CC +CC +CC +76 +00 +30 +30 +00 +ENDCHAR +STARTCHAR Ygrave +ENCODING 7922 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +30 +18 +00 +66 +66 +66 +3C +18 +18 +18 +18 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR ygrave +ENCODING 7923 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +60 +30 +00 +C6 +C6 +C6 +C6 +C6 +C6 +7E +06 +0C +F8 +00 +ENDCHAR +STARTCHAR uni1EF4 +ENCODING 7924 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +66 +66 +66 +66 +3C +18 +18 +18 +18 +3C +00 +18 +18 +00 +ENDCHAR +STARTCHAR uni1EF5 +ENCODING 7925 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +C6 +C6 +C6 +C6 +C6 +7E +0C +18 +F6 +06 +00 +ENDCHAR +STARTCHAR uni1EF6 +ENCODING 7926 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +38 +0C +18 +66 +66 +66 +3C +18 +18 +18 +18 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1EF7 +ENCODING 7927 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +38 +0C +18 +00 +C6 +C6 +C6 +C6 +C6 +C6 +7E +06 +0C +F8 +00 +ENDCHAR +STARTCHAR uni1EF8 +ENCODING 7928 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +3A +5C +00 +66 +66 +66 +3C +18 +18 +18 +18 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1EF9 +ENCODING 7929 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +76 +DC +00 +C6 +C6 +C6 +C6 +C6 +C6 +7E +06 +0C +F8 +00 +ENDCHAR +STARTCHAR uni1F00 +ENCODING 7936 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +18 +18 +30 +00 +76 +CC +CC +CC +CC +CC +76 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1F01 +ENCODING 7937 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +30 +30 +18 +00 +76 +CC +CC +CC +CC +CC +76 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1F02 +ENCODING 7938 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +60 +6C +C6 +00 +76 +CC +CC +CC +CC +CC +76 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1F03 +ENCODING 7939 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +C0 +CC +66 +00 +76 +CC +CC +CC +CC +CC +76 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1F04 +ENCODING 7940 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +60 +66 +CC +00 +76 +CC +CC +CC +CC +CC +76 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1F05 +ENCODING 7941 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +C0 +C6 +6C +00 +76 +CC +CC +CC +CC +CC +76 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1F06 +ENCODING 7942 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +34 +58 +0C +18 +00 +76 +CC +CC +CC +CC +CC +76 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1F07 +ENCODING 7943 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +34 +58 +30 +18 +00 +76 +CC +CC +CC +CC +CC +76 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2409 +ENCODING 8192 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +FE +00 +A4 +AA +EA +EA +A6 +00 +6C +8A +4C +28 +C8 +00 +FE +00 +ENDCHAR +STARTCHAR uni2409 +ENCODING 8193 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +FE +00 +A4 +EA +AA +AA +A6 +00 +6C +8A +4C +28 +C8 +00 +FE +00 +ENDCHAR +STARTCHAR uni2409 +ENCODING 8194 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +FE +00 +EA +8A +CE +8E +EA +00 +6C +8A +4C +28 +C8 +00 +FE +00 +ENDCHAR +STARTCHAR uni2409 +ENCODING 8195 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +FE +00 +EA +8E +CA +8A +EA +00 +6C +8A +4C +28 +C8 +00 +FE +00 +ENDCHAR +STARTCHAR uni2409 +ENCODING 8196 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +FE +00 +CA +2E +4A +2A +CA +00 +6C +8A +4C +28 +C8 +00 +FE +00 +ENDCHAR +STARTCHAR uni2409 +ENCODING 8197 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +FE +00 +AA +AE +EA +2A +2A +00 +6C +8A +4C +28 +C8 +00 +FE +00 +ENDCHAR +STARTCHAR uni2409 +ENCODING 8198 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +FE +00 +6A +8E +CA +AA +4A +00 +6C +8A +4C +28 +C8 +00 +FE +00 +ENDCHAR +STARTCHAR uni2409 +ENCODING 8199 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +FE +00 +38 +20 +30 +20 +20 +00 +6C +8A +4C +28 +C8 +00 +FE +00 +ENDCHAR +STARTCHAR uni2409 +ENCODING 8200 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +FE +00 +30 +28 +30 +20 +20 +00 +6C +8A +4C +28 +C8 +00 +FE +00 +ENDCHAR +STARTCHAR uni2409 +ENCODING 8201 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +FE +00 +EA +4A +4E +4A +4A +00 +6C +8A +4C +28 +C8 +00 +FE +00 +ENDCHAR +STARTCHAR uni2409 +ENCODING 8202 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +FE +00 +28 +28 +38 +28 +28 +00 +6C +8A +4C +28 +C8 +00 +FE +00 +ENDCHAR +STARTCHAR uni2409 +ENCODING 8203 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +FE +00 +EA +2A +4E +8E +EE +00 +6C +8A +4C +28 +C8 +00 +FE +00 +ENDCHAR +STARTCHAR uni2409 +ENCODING 8204 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +FE +00 +EA +2A +4E +8E +EE +00 +A2 +A2 +E2 +EA +A4 +00 +FE +00 +ENDCHAR +STARTCHAR uni2409 +ENCODING 8205 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +FE +00 +EA +2A +4E +8E +EE +00 +08 +08 +08 +28 +10 +00 +FE +00 +ENDCHAR +STARTCHAR uni2409 +ENCODING 8206 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +FE +00 +80 +80 +80 +F0 +28 +30 +28 +0A +0E +0E +0A +00 +FE +00 +ENDCHAR +STARTCHAR uni2409 +ENCODING 8207 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +FE +00 +C0 +A0 +C0 +A0 +20 +20 +38 +0A +0E +0E +0A +00 +FE +00 +ENDCHAR +STARTCHAR uni2010 +ENCODING 8208 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +7C +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2011 +ENCODING 8209 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +9C +D2 +BC +92 +9C +00 +3C +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR figuredash +ENCODING 8210 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +7E +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR endash +ENCODING 8211 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +7E +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR emdash +ENCODING 8212 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +FF +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii00208 +ENCODING 8213 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +FF +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2016 +ENCODING 8214 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +6C +6C +6C +6C +6C +6C +6C +6C +6C +6C +00 +00 +00 +00 +ENDCHAR +STARTCHAR underscoredbl +ENCODING 8215 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +FE +00 +FE +00 +ENDCHAR +STARTCHAR quoteleft +ENCODING 8216 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +18 +30 +30 +30 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR quoteright +ENCODING 8217 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +18 +18 +18 +30 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR quotesinglbase +ENCODING 8218 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +18 +18 +18 +30 +00 +00 +ENDCHAR +STARTCHAR quotereversed +ENCODING 8219 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +30 +30 +30 +18 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR quotedblleft +ENCODING 8220 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +66 +CC +CC +CC +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR quotedblright +ENCODING 8221 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +66 +66 +66 +CC +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR quotedblbase +ENCODING 8222 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +66 +66 +66 +CC +00 +00 +ENDCHAR +STARTCHAR uni201F +ENCODING 8223 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +CC +CC +CC +66 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR dagger +ENCODING 8224 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +18 +18 +18 +7E +18 +18 +18 +18 +18 +18 +00 +00 +00 +00 +ENDCHAR +STARTCHAR daggerdbl +ENCODING 8225 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +18 +18 +18 +7E +18 +18 +7E +18 +18 +18 +00 +00 +00 +00 +ENDCHAR +STARTCHAR bullet +ENCODING 8226 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +18 +3C +3C +18 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2023 +ENCODING 8227 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +20 +30 +38 +3C +38 +30 +20 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR onedotenleader +ENCODING 8228 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +18 +18 +00 +00 +00 +00 +ENDCHAR +STARTCHAR twodotenleader +ENCODING 8229 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +66 +66 +00 +00 +00 +00 +ENDCHAR +STARTCHAR ellipsis +ENCODING 8230 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +DB +DB +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2027 +ENCODING 8231 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +18 +18 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR perthousand +ENCODING 8240 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +C0 +C6 +0C +18 +30 +60 +C0 +36 +36 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2031 +ENCODING 8241 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +C0 +C6 +0C +18 +30 +60 +C0 +6B +6B +00 +00 +00 +00 +ENDCHAR +STARTCHAR minute +ENCODING 8242 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +18 +18 +10 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR second +ENCODING 8243 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +6C +6C +48 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2034 +ENCODING 8244 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +DB +DB +92 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2035 +ENCODING 8245 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +18 +18 +08 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2036 +ENCODING 8246 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +6C +6C +24 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2037 +ENCODING 8247 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +DB +DB +49 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2038 +ENCODING 8248 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +10 +38 +6C +C6 +00 +ENDCHAR +STARTCHAR guilsinglleft +ENCODING 8249 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +0C +18 +30 +60 +30 +18 +0C +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR guilsinglright +ENCODING 8250 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +60 +30 +18 +0C +18 +30 +60 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni203B +ENCODING 8251 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +92 +44 +28 +92 +28 +44 +92 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR exclamdbl +ENCODING 8252 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +66 +66 +66 +66 +66 +66 +66 +00 +66 +66 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni203D +ENCODING 8253 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +7E +C3 +DB +1B +1E +1C +18 +00 +18 +18 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni203E +ENCODING 8254 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +FE +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni203F +ENCODING 8255 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +82 +7C +00 +00 +ENDCHAR +STARTCHAR uni2040 +ENCODING 8256 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +7C +82 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2041 +ENCODING 8257 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +06 +0C +18 +38 +6C +00 +ENDCHAR +STARTCHAR uni2042 +ENCODING 8258 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +10 +38 +28 +00 +00 +44 +EE +AA +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2043 +ENCODING 8259 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +3C +3C +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR fraction +ENCODING 8260 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +06 +06 +0C +0C +18 +18 +30 +30 +60 +60 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2045 +ENCODING 8261 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +3C +30 +30 +30 +3C +30 +30 +30 +30 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2046 +ENCODING 8262 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +3C +0C +0C +0C +3C +0C +0C +0C +0C +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2048 +ENCODING 8264 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +7B +CF +CF +1B +33 +33 +33 +00 +33 +33 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2049 +ENCODING 8265 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +DE +F3 +F3 +C6 +CC +CC +CC +00 +CC +CC +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni204A +ENCODING 8266 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +7E +7E +06 +06 +0C +0C +00 +00 +00 +ENDCHAR +STARTCHAR uni204B +ENCODING 8267 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +FE +DB +DB +DB +DE +D8 +D8 +D8 +D8 +D8 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni204C +ENCODING 8268 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +3E +72 +F2 +F2 +F2 +72 +3E +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni204D +ENCODING 8269 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +F8 +9C +9E +9E +9E +9C +F8 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR zerosuperior +ENCODING 8304 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +70 +D8 +D8 +D8 +D8 +70 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR foursuperior +ENCODING 8308 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +18 +38 +78 +D8 +FC +18 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR fivesuperior +ENCODING 8309 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +F8 +C0 +F0 +18 +D8 +70 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR sixsuperior +ENCODING 8310 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +78 +C0 +F0 +D8 +D8 +70 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR sevensuperior +ENCODING 8311 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +F8 +D8 +30 +30 +60 +60 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR eightsuperior +ENCODING 8312 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +70 +D8 +70 +D8 +D8 +70 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR ninesuperior +ENCODING 8313 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +70 +D8 +D8 +78 +18 +F0 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni207A +ENCODING 8314 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +30 +30 +FC +30 +30 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni207B +ENCODING 8315 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +FC +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni207C +ENCODING 8316 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +FC +00 +FC +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR parenleftsuperior +ENCODING 8317 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +30 +60 +60 +60 +60 +30 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR parenrightsuperior +ENCODING 8318 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +60 +30 +30 +30 +30 +60 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR nsuperior +ENCODING 8319 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +B0 +D8 +D8 +D8 +D8 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR zeroinferior +ENCODING 8320 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +70 +D8 +D8 +D8 +D8 +70 +00 +00 +00 +ENDCHAR +STARTCHAR oneinferior +ENCODING 8321 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +30 +70 +30 +30 +30 +78 +00 +00 +00 +ENDCHAR +STARTCHAR twoinferior +ENCODING 8322 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +70 +D8 +30 +60 +C8 +F8 +00 +00 +00 +ENDCHAR +STARTCHAR threeinferior +ENCODING 8323 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +70 +D8 +30 +18 +D8 +70 +00 +00 +00 +ENDCHAR +STARTCHAR fourinferior +ENCODING 8324 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +18 +38 +78 +D8 +FC +18 +00 +00 +00 +ENDCHAR +STARTCHAR fiveinferior +ENCODING 8325 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +F8 +C0 +F0 +18 +D8 +70 +00 +00 +00 +ENDCHAR +STARTCHAR sixinferior +ENCODING 8326 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +78 +C0 +F0 +D8 +D8 +70 +00 +00 +00 +ENDCHAR +STARTCHAR seveninferior +ENCODING 8327 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +F8 +D8 +30 +30 +60 +60 +00 +00 +00 +ENDCHAR +STARTCHAR eightinferior +ENCODING 8328 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +70 +D8 +70 +D8 +D8 +70 +00 +00 +00 +ENDCHAR +STARTCHAR nineinferior +ENCODING 8329 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +70 +D8 +D8 +78 +18 +F0 +00 +00 +00 +ENDCHAR +STARTCHAR uni208A +ENCODING 8330 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +30 +30 +FC +30 +30 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni208B +ENCODING 8331 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +FC +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni208C +ENCODING 8332 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +FC +00 +FC +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR parenleftinferior +ENCODING 8333 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +30 +60 +60 +60 +60 +30 +00 +00 +00 +ENDCHAR +STARTCHAR parenrightinferior +ENCODING 8334 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +60 +30 +30 +30 +30 +60 +00 +00 +00 +ENDCHAR +STARTCHAR uni208F +ENCODING 8335 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +B0 +D8 +D8 +D8 +D8 +00 +00 +00 +ENDCHAR +STARTCHAR uni20A0 +ENCODING 8352 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +78 +CC +C0 +CF +CC +CC +7F +0C +0C +0F +00 +00 +00 +00 +ENDCHAR +STARTCHAR colonmonetary +ENCODING 8353 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +04 +04 +7C +CE +C8 +C8 +D0 +D0 +D0 +E0 +E6 +7C +40 +40 +00 +00 +ENDCHAR +STARTCHAR uni20A2 +ENCODING 8354 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +7C +C6 +C0 +C0 +D6 +D8 +D8 +D8 +DE +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR franc +ENCODING 8355 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +F8 +C0 +C0 +C0 +F0 +CD +CE +CC +CC +CC +00 +00 +00 +00 +ENDCHAR +STARTCHAR lira +ENCODING 8356 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +38 +6C +60 +F8 +60 +F8 +60 +60 +E6 +FC +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni20A5 +ENCODING 8357 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +02 +EC +D6 +DE +D6 +D6 +F6 +D6 +40 +00 +00 +00 +ENDCHAR +STARTCHAR uni20A6 +ENCODING 8358 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +66 +66 +76 +FF +76 +6E +FF +6E +66 +66 +00 +00 +00 +00 +ENDCHAR +STARTCHAR peseta +ENCODING 8359 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +FC +66 +66 +7C +62 +66 +6F +66 +66 +F3 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni20A8 +ENCODING 8360 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +F8 +CC +CC +CC +F8 +E0 +F3 +D6 +DB +CE +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni20A9 +ENCODING 8361 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +81 +81 +81 +5A +FF +5A +FF +24 +24 +24 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii57636 +ENCODING 8362 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +F2 +8A +AA +AA +AA +AA +A2 +BC +00 +00 +00 +00 +ENDCHAR +STARTCHAR dong +ENCODING 8363 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +0C +3E +0C +3C +6C +CC +CC +CC +CC +76 +00 +7C +00 +00 +ENDCHAR +STARTCHAR Euro +ENCODING 8364 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +1C +36 +60 +FC +60 +F8 +60 +60 +36 +1C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni20AD +ENCODING 8365 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +E6 +66 +6C +78 +FE +78 +6C +66 +66 +E6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni20AE +ENCODING 8366 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +7E +7E +5A +18 +1E +78 +1E +78 +18 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni20AF +ENCODING 8367 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +10 +7C +B6 +36 +33 +33 +33 +63 +66 +F6 +DC +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2100 +ENCODING 8448 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +70 +D0 +D2 +D6 +7C +18 +30 +6E +D8 +98 +18 +0E +00 +00 +00 +ENDCHAR +STARTCHAR uni2101 +ENCODING 8449 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +70 +D0 +D2 +D6 +7C +18 +30 +6E +D8 +8C +06 +1C +00 +00 +00 +ENDCHAR +STARTCHAR uni2102 +ENCODING 8450 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +3C +62 +A0 +A0 +A0 +A0 +A0 +A0 +62 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2103 +ENCODING 8451 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +4E +B9 +58 +18 +18 +18 +18 +18 +19 +0E +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2104 +ENCODING 8452 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +3C +18 +7C +DA +D8 +D8 +DA +7C +19 +3F +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii61248 +ENCODING 8453 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +70 +C0 +C2 +C6 +7C +18 +30 +6E +DB +9B +1B +0E +00 +00 +00 +ENDCHAR +STARTCHAR uni2106 +ENCODING 8454 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +70 +C0 +C2 +C6 +7C +18 +30 +7B +DB +9B +1B +0D +00 +00 +00 +ENDCHAR +STARTCHAR uni2107 +ENCODING 8455 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +7C +C6 +C2 +C0 +78 +C0 +C0 +C2 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2108 +ENCODING 8456 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +78 +CC +86 +26 +3E +26 +06 +86 +CC +78 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2109 +ENCODING 8457 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +7F +B9 +58 +1A +1E +1A +18 +18 +18 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni210A +ENCODING 8458 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +1A +66 +46 +87 +8C +8C +7C +98 +98 +70 +00 +ENDCHAR +STARTCHAR uni210B +ENCODING 8459 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +52 +B5 +15 +16 +2C +34 +68 +A9 +AA +4C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni210C +ENCODING 8460 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +48 +B0 +80 +48 +7C +66 +26 +26 +A6 +46 +06 +34 +48 +00 +ENDCHAR +STARTCHAR uni210D +ENCODING 8461 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +E2 +A2 +A2 +A2 +BE +A2 +A2 +A2 +A2 +E2 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni210E +ENCODING 8462 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +38 +18 +18 +36 +3B +3B +33 +66 +66 +E6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni210F +ENCODING 8463 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +38 +1E +18 +76 +3B +3B +33 +66 +66 +E6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2110 +ENCODING 8464 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +33 +4E +06 +06 +0C +0C +1F +6C +88 +70 +00 +00 +00 +00 +ENDCHAR +STARTCHAR Ifraktur +ENCODING 8465 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +71 +8E +04 +0C +06 +03 +63 +C3 +42 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2112 +ENCODING 8466 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +46 +49 +39 +1E +18 +30 +70 +B1 +BA +6C +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii61289 +ENCODING 8467 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +0E +19 +31 +32 +64 +68 +70 +E1 +66 +38 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2114 +ENCODING 8468 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +D8 +FF +D8 +DE +DB +DB +DB +DB +DB +DE +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2115 +ENCODING 8469 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +E2 +A2 +B2 +B2 +AA +AA +A6 +A6 +A2 +E2 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii61352 +ENCODING 8470 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +CC +CF +ED +FF +FC +DF +CC +CC +CC +CC +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2117 +ENCODING 8471 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +3C +42 +B9 +A5 +A5 +B9 +A1 +A1 +42 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR weierstrass +ENCODING 8472 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +40 +8E +93 +A3 +63 +4B +6A +A4 +B0 +B0 +60 +00 +ENDCHAR +STARTCHAR uni2119 +ENCODING 8473 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +FC +A2 +A2 +A2 +A2 +BC +A0 +A0 +A0 +E0 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni211A +ENCODING 8474 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +7C +A2 +A2 +A2 +A2 +A2 +A2 +AA +A6 +7E +01 +00 +00 +00 +ENDCHAR +STARTCHAR uni211B +ENCODING 8475 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +3E +4D +4D +19 +1E +1C +34 +34 +B5 +62 +00 +00 +00 +00 +ENDCHAR +STARTCHAR Rfraktur +ENCODING 8476 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +58 +A6 +A3 +6C +B8 +26 +26 +26 +A7 +C2 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni211D +ENCODING 8477 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +FC +A2 +A2 +A2 +A2 +BC +B0 +A8 +A4 +E2 +00 +00 +00 +00 +ENDCHAR +STARTCHAR prescription +ENCODING 8478 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +FC +66 +66 +66 +7C +6C +6D +67 +66 +EE +08 +00 +00 +00 +ENDCHAR +STARTCHAR uni211F +ENCODING 8479 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +30 +0C +FC +C6 +C6 +C6 +FC +D8 +DC +DC +E6 +E6 +20 +00 +00 +00 +ENDCHAR +STARTCHAR uni2120 +ENCODING 8480 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +71 +DB +35 +D1 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2121 +ENCODING 8481 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +FE +52 +5A +52 +5F +00 +00 +00 +00 +ENDCHAR +STARTCHAR trademark +ENCODING 8482 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +F1 +5B +55 +51 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2123 +ENCODING 8483 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +60 +18 +CE +D6 +D6 +D6 +D6 +D6 +E6 +6C +38 +50 +40 +00 +00 +00 +ENDCHAR +STARTCHAR uni2124 +ENCODING 8484 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +FE +0A +14 +14 +28 +28 +50 +50 +A0 +FE +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2125 +ENCODING 8485 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +FE +9C +30 +FE +0C +18 +38 +0C +06 +06 +C6 +C6 +7C +00 +ENDCHAR +STARTCHAR Omega +ENCODING 8486 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +7C +C6 +C6 +C6 +C6 +C6 +6C +6C +6C +EE +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2127 +ENCODING 8487 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +EE +6C +6C +6C +C6 +C6 +C6 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2128 +ENCODING 8488 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +18 +26 +03 +13 +0C +13 +03 +03 +66 +98 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2129 +ENCODING 8489 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +70 +18 +18 +18 +18 +1C +18 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni212A +ENCODING 8490 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +E6 +66 +66 +6C +78 +78 +6C +66 +66 +E6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni212B +ENCODING 8491 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +38 +6C +38 +10 +38 +38 +6C +6C +C6 +FE +C6 +C6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni212C +ENCODING 8492 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +1E +2D +2D +1A +1E +1B +31 +31 +B2 +6C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni212D +ENCODING 8493 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +14 +6B +C8 +CC +C6 +C6 +CC +C0 +63 +1C +00 +00 +00 +00 +ENDCHAR +STARTCHAR estimated +ENCODING 8494 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +3C +66 +E7 +FF +E0 +67 +3E +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni212F +ENCODING 8495 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +1C +26 +44 +F8 +C0 +C8 +70 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2130 +ENCODING 8496 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +4C +52 +3C +10 +3C +60 +C0 +C3 +CC +78 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2131 +ENCODING 8497 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +73 +CE +18 +3A +5C +18 +30 +30 +B0 +60 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2132 +ENCODING 8498 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +1E +0C +0C +0C +2C +3C +2C +8C +CC +FE +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2133 +ENCODING 8499 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +12 +12 +12 +16 +36 +3E +3A +5A +52 +91 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2134 +ENCODING 8500 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +1C +26 +46 +C6 +C4 +C8 +70 +00 +00 +00 +00 +ENDCHAR +STARTCHAR aleph +ENCODING 8501 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +42 +C6 +E7 +7A +38 +5C +CE +E7 +63 +E2 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2136 +ENCODING 8502 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +80 +FC +7E +06 +06 +06 +06 +0C +7E +FE +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2137 +ENCODING 8503 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +40 +78 +3C +0C +0C +0C +0C +1E +7E +F2 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2138 +ENCODING 8504 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +80 +FE +7E +0C +0C +0C +0C +0C +1C +18 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2139 +ENCODING 8505 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +38 +38 +00 +78 +38 +38 +38 +38 +38 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni213A +ENCODING 8506 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +7D +FF +83 +86 +82 +FE +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR onethird +ENCODING 8531 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +C0 +C0 +C2 +C6 +CC +18 +30 +60 +DC +86 +1C +06 +1C +00 +00 +ENDCHAR +STARTCHAR twothirds +ENCODING 8532 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +E0 +30 +62 +C6 +FC +18 +30 +60 +DC +86 +1C +06 +1C +00 +00 +ENDCHAR +STARTCHAR uni2155 +ENCODING 8533 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +C0 +C0 +C2 +C6 +CC +18 +30 +60 +DE +98 +1C +06 +1C +00 +00 +ENDCHAR +STARTCHAR uni2156 +ENCODING 8534 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +E0 +30 +62 +C6 +FC +18 +30 +60 +DE +98 +1C +06 +1C +00 +00 +ENDCHAR +STARTCHAR uni2157 +ENCODING 8535 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +E0 +30 +62 +36 +EC +18 +30 +60 +DE +98 +1C +06 +1C +00 +00 +ENDCHAR +STARTCHAR uni2158 +ENCODING 8536 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +30 +70 +B2 +F6 +3C +18 +30 +60 +DE +98 +1C +06 +1C +00 +00 +ENDCHAR +STARTCHAR uni2159 +ENCODING 8537 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +C0 +C0 +C2 +C6 +CC +18 +30 +60 +DC +B0 +3C +36 +1C +00 +00 +ENDCHAR +STARTCHAR uni215A +ENCODING 8538 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +F0 +C0 +E2 +36 +EC +18 +30 +60 +DC +B0 +3C +36 +1C +00 +00 +ENDCHAR +STARTCHAR oneeighth +ENCODING 8539 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +C0 +C0 +C2 +C6 +CC +18 +30 +60 +DC +B6 +1C +36 +1C +00 +00 +ENDCHAR +STARTCHAR threeeighths +ENCODING 8540 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +E0 +30 +62 +36 +EC +18 +30 +60 +DC +B6 +1C +36 +1C +00 +00 +ENDCHAR +STARTCHAR fiveeighths +ENCODING 8541 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +F0 +80 +E2 +36 +EC +18 +30 +60 +DC +B6 +1C +36 +1C +00 +00 +ENDCHAR +STARTCHAR seveneighths +ENCODING 8542 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +F0 +30 +62 +66 +6C +18 +30 +60 +DC +B6 +1C +36 +1C +00 +00 +ENDCHAR +STARTCHAR uni215F +ENCODING 8543 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +C0 +C0 +C2 +C6 +CC +18 +30 +60 +C0 +80 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2160 +ENCODING 8544 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +3C +18 +18 +18 +18 +18 +18 +18 +18 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2161 +ENCODING 8545 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +FE +6C +6C +6C +6C +6C +6C +6C +6C +FE +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2162 +ENCODING 8546 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +FF +DB +DB +DB +DB +DB +DB +DB +DB +FF +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2163 +ENCODING 8547 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +DB +DB +DB +DB +DB +DB +DB +CE +CE +C4 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2164 +ENCODING 8548 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +C6 +C6 +C6 +C6 +C6 +C6 +C6 +6C +38 +10 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2165 +ENCODING 8549 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +DB +DB +DB +DB +DB +DB +DB +73 +73 +23 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2166 +ENCODING 8550 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +95 +95 +95 +95 +95 +95 +95 +65 +65 +65 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2167 +ENCODING 8551 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +B5 +B5 +B5 +B5 +B5 +B5 +55 +55 +55 +55 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2168 +ENCODING 8552 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +DB +DB +DB +CE +CE +CE +DB +DB +DB +DB +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2169 +ENCODING 8553 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +C6 +C6 +6C +7C +38 +38 +7C +6C +C6 +C6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni216A +ENCODING 8554 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +DB +DB +DB +73 +73 +73 +DB +DB +DB +DB +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni216B +ENCODING 8555 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +95 +95 +95 +65 +65 +65 +95 +95 +95 +95 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni216C +ENCODING 8556 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +F0 +60 +60 +60 +60 +60 +60 +62 +66 +FE +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni216D +ENCODING 8557 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +3C +66 +C2 +C0 +C0 +C0 +C0 +C2 +66 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni216E +ENCODING 8558 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +F8 +6C +66 +66 +66 +66 +66 +66 +6C +F8 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni216F +ENCODING 8559 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +C6 +EE +FE +FE +D6 +C6 +C6 +C6 +C6 +C6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2170 +ENCODING 8560 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +18 +18 +00 +18 +18 +18 +18 +18 +18 +18 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2171 +ENCODING 8561 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +6C +6C +00 +6C +6C +6C +6C +6C +6C +6C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2172 +ENCODING 8562 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +DB +DB +00 +DB +DB +DB +DB +DB +DB +DB +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2173 +ENCODING 8563 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +C0 +C0 +00 +DB +DB +DB +DB +DB +CE +C4 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2174 +ENCODING 8564 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +66 +66 +66 +66 +66 +3C +18 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2175 +ENCODING 8565 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +03 +03 +00 +DB +DB +DB +DB +DB +73 +23 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2176 +ENCODING 8566 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +05 +05 +00 +95 +95 +95 +95 +95 +65 +65 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2177 +ENCODING 8567 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +15 +15 +00 +B5 +B5 +B5 +B5 +55 +55 +55 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2178 +ENCODING 8568 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +C0 +C0 +00 +DB +DB +CE +CE +CE +DB +DB +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2179 +ENCODING 8569 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +C6 +6C +38 +38 +38 +6C +C6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni217A +ENCODING 8570 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +03 +03 +00 +DB +DB +73 +73 +73 +DB +DB +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni217B +ENCODING 8571 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +05 +05 +00 +95 +95 +65 +65 +95 +95 +95 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni217C +ENCODING 8572 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +38 +18 +18 +18 +18 +18 +18 +18 +18 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni217D +ENCODING 8573 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +7C +C6 +C0 +C0 +C0 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni217E +ENCODING 8574 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +1C +0C +0C +3C +6C +CC +CC +CC +CC +76 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni217F +ENCODING 8575 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +EC +FE +D6 +D6 +D6 +D6 +C6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2180 +ENCODING 8576 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +3C +5A +DB +DB +DB +DB +DB +DB +5A +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2181 +ENCODING 8577 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +F8 +CC +E6 +D6 +D6 +D6 +D6 +E6 +CC +F8 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2182 +ENCODING 8578 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +3C +5A +99 +BD +DB +DB +BD +99 +5A +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2183 +ENCODING 8579 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +78 +CC +86 +06 +06 +06 +06 +86 +CC +78 +00 +00 +00 +00 +ENDCHAR +STARTCHAR arrowleft +ENCODING 8592 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +30 +60 +FF +60 +30 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR arrowup +ENCODING 8593 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +18 +3C +7E +18 +18 +18 +18 +18 +18 +18 +00 +00 +00 +00 +ENDCHAR +STARTCHAR arrowright +ENCODING 8594 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +0C +06 +FF +06 +0C +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR arrowdown +ENCODING 8595 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +18 +18 +18 +18 +18 +18 +18 +7E +3C +18 +00 +00 +00 +00 +ENDCHAR +STARTCHAR arrowboth +ENCODING 8596 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +24 +66 +FF +66 +24 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR arrowupdn +ENCODING 8597 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +18 +3C +7E +18 +18 +18 +7E +3C +18 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2196 +ENCODING 8598 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +F0 +E0 +B0 +18 +0C +06 +03 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2197 +ENCODING 8599 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +0F +07 +0D +18 +30 +60 +C0 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2198 +ENCODING 8600 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +C0 +60 +30 +18 +0D +07 +0F +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2199 +ENCODING 8601 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +03 +06 +0C +18 +B0 +E0 +F0 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni219A +ENCODING 8602 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +32 +62 +FF +64 +34 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni219B +ENCODING 8603 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +2C +26 +FF +46 +4C +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni219C +ENCODING 8604 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +E0 +CE +BB +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni219D +ENCODING 8605 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +07 +73 +DD +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni219E +ENCODING 8606 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +36 +6C +FF +6C +36 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni219F +ENCODING 8607 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +18 +3C +7E +18 +3C +7E +18 +18 +18 +18 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni21A0 +ENCODING 8608 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +6C +36 +FF +36 +6C +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni21A1 +ENCODING 8609 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +18 +18 +18 +18 +7E +3C +18 +7E +3C +18 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni21A2 +ENCODING 8610 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +33 +66 +FC +66 +33 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni21A3 +ENCODING 8611 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +CC +66 +3F +66 +CC +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni21A4 +ENCODING 8612 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +33 +63 +FF +63 +33 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni21A5 +ENCODING 8613 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +18 +3C +7E +18 +18 +18 +18 +18 +18 +7E +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni21A6 +ENCODING 8614 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +CC +C6 +FF +C6 +CC +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni21A7 +ENCODING 8615 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +7E +18 +18 +18 +18 +18 +18 +7E +3C +18 +00 +00 +00 +00 +ENDCHAR +STARTCHAR arrowupdnbse +ENCODING 8616 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +18 +3C +7E +18 +18 +18 +7E +3C +18 +7E +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni21A9 +ENCODING 8617 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +06 +33 +63 +FE +60 +30 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni21AA +ENCODING 8618 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +60 +CC +C6 +7F +06 +0C +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni21AB +ENCODING 8619 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +06 +3B +6B +FE +68 +30 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni21AC +ENCODING 8620 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +60 +DC +D6 +7F +16 +0C +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni21AD +ENCODING 8621 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +24 +5A +FF +66 +24 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni21AE +ENCODING 8622 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +2C +6E +FF +76 +34 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni21AF +ENCODING 8623 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +30 +30 +60 +63 +FF +C6 +16 +1C +1C +1E +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni21B0 +ENCODING 8624 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +30 +60 +FE +66 +36 +06 +06 +06 +06 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni21B1 +ENCODING 8625 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +18 +0C +FE +CC +D8 +C0 +C0 +C0 +C0 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni21B2 +ENCODING 8626 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +06 +06 +06 +06 +36 +66 +FE +60 +30 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni21B3 +ENCODING 8627 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +C0 +C0 +C0 +C0 +D8 +CC +FE +0C +18 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni21B4 +ENCODING 8628 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +FC +0C +0C +3F +1E +0C +00 +00 +00 +ENDCHAR +STARTCHAR carriagereturn +ENCODING 8629 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +06 +36 +66 +FE +60 +30 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni21B6 +ENCODING 8630 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +1E +33 +33 +33 +30 +FC +78 +30 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni21B7 +ENCODING 8631 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +78 +CC +CC +CC +0C +3F +1E +0C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni21B8 +ENCODING 8632 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +FF +00 +F0 +E0 +B0 +18 +0C +06 +03 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni21B9 +ENCODING 8633 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +98 +B0 +FF +B0 +98 +19 +0D +FF +0D +19 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni21BA +ENCODING 8634 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +1E +1C +16 +03 +C3 +C3 +C3 +66 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni21BB +ENCODING 8635 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +78 +38 +68 +C0 +C3 +C3 +C3 +66 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni21BC +ENCODING 8636 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +30 +60 +FF +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni21BD +ENCODING 8637 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +FF +60 +30 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni21BE +ENCODING 8638 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +18 +1C +1E +18 +18 +18 +18 +18 +18 +18 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni21BF +ENCODING 8639 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +18 +38 +78 +18 +18 +18 +18 +18 +18 +18 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni21C0 +ENCODING 8640 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +0C +06 +FF +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni21C1 +ENCODING 8641 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +FF +06 +0C +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni21C2 +ENCODING 8642 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +18 +18 +18 +18 +18 +18 +18 +1E +1C +18 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni21C3 +ENCODING 8643 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +18 +18 +18 +18 +18 +18 +18 +78 +38 +18 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni21C4 +ENCODING 8644 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +0C +06 +FF +06 +0C +30 +60 +FF +60 +30 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni21C5 +ENCODING 8645 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +24 +2E +3F +24 +24 +24 +24 +FC +74 +24 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni21C6 +ENCODING 8646 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +30 +60 +FF +60 +30 +0C +06 +FF +06 +0C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni21C7 +ENCODING 8647 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +30 +60 +FE +60 +30 +00 +30 +60 +FE +60 +30 +00 +00 +00 +ENDCHAR +STARTCHAR uni21C8 +ENCODING 8648 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +24 +7E +FF +24 +24 +24 +24 +24 +24 +24 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni21C9 +ENCODING 8649 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +18 +0C +FE +0C +18 +00 +18 +0C +FE +0C +18 +00 +00 +00 +ENDCHAR +STARTCHAR uni21CA +ENCODING 8650 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +24 +24 +24 +24 +24 +24 +24 +FF +7E +24 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni21CB +ENCODING 8651 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +30 +60 +FF +00 +FF +06 +0C +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni21CC +ENCODING 8652 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +0C +06 +FF +00 +FF +60 +30 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni21CD +ENCODING 8653 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +22 +7F +C4 +7F +24 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni21CE +ENCODING 8654 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +2C +7E +CB +7E +34 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni21CF +ENCODING 8655 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +24 +FE +23 +FE +44 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR arrowdblleft +ENCODING 8656 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +20 +7F +C0 +7F +20 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR arrowdblup +ENCODING 8657 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +38 +7C +EE +6C +6C +6C +6C +6C +6C +6C +00 +00 +00 +00 +ENDCHAR +STARTCHAR arrowdblright +ENCODING 8658 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +04 +FE +03 +FE +04 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR arrowdbldown +ENCODING 8659 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +6C +6C +6C +6C +6C +6C +6C +EE +7C +38 +00 +00 +00 +00 +ENDCHAR +STARTCHAR arrowdblboth +ENCODING 8660 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +24 +7E +C3 +7E +24 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni21D5 +ENCODING 8661 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +38 +7C +EE +6C +6C +6C +6C +EE +7C +38 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni21D6 +ENCODING 8662 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +F0 +E0 +B0 +D8 +EC +B6 +1B +0C +04 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni21D7 +ENCODING 8663 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +0F +07 +0D +1B +37 +6D +D8 +30 +20 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni21D8 +ENCODING 8664 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +20 +30 +D8 +6D +37 +1B +0D +07 +0F +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni21D9 +ENCODING 8665 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +04 +0C +1B +B6 +EC +D8 +B0 +E0 +F0 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni21DA +ENCODING 8666 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +10 +3F +60 +FF +60 +3F +10 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni21DB +ENCODING 8667 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +08 +FC +06 +FF +06 +FC +08 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni21DC +ENCODING 8668 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +30 +6A +FF +65 +30 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni21DD +ENCODING 8669 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +0C +A6 +FF +56 +0C +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni21DE +ENCODING 8670 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +18 +3C +7E +18 +18 +3C +18 +3C +18 +18 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni21DF +ENCODING 8671 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +18 +18 +3C +18 +3C +18 +18 +7E +3C +18 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni21E0 +ENCODING 8672 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +30 +60 +D5 +60 +30 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni21E1 +ENCODING 8673 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +18 +3C +66 +18 +00 +18 +00 +18 +00 +18 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni21E2 +ENCODING 8674 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +0C +06 +AB +06 +0C +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni21E3 +ENCODING 8675 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +18 +00 +18 +00 +18 +00 +18 +66 +3C +18 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni21E4 +ENCODING 8676 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +98 +B0 +FF +B0 +98 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni21E5 +ENCODING 8677 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +19 +0D +FF +0D +19 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni21E6 +ENCODING 8678 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +10 +3F +41 +81 +41 +3F +10 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni21E7 +ENCODING 8679 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +10 +28 +44 +C6 +44 +44 +44 +44 +44 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni21E8 +ENCODING 8680 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +08 +FC +82 +81 +82 +FC +08 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni21E9 +ENCODING 8681 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +7C +44 +44 +44 +44 +44 +C6 +44 +28 +10 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni21EA +ENCODING 8682 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +10 +28 +44 +C6 +44 +44 +7C +00 +7C +44 +7C +00 +00 +00 +ENDCHAR +STARTCHAR uni21EB +ENCODING 8683 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +10 +28 +44 +C6 +44 +44 +44 +C6 +82 +FE +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni21EC +ENCODING 8684 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +10 +28 +7C +C6 +44 +44 +44 +C6 +82 +FE +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni21ED +ENCODING 8685 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +10 +38 +54 +D6 +54 +54 +54 +D6 +92 +FE +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni21EE +ENCODING 8686 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +10 +28 +54 +EE +44 +C6 +44 +44 +44 +44 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni21EF +ENCODING 8687 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +10 +28 +54 +EE +44 +C6 +44 +44 +C6 +82 +FE +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni21F0 +ENCODING 8688 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +E8 +BC +82 +81 +82 +BC +E8 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni21F1 +ENCODING 8689 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +FF +80 +BC +B8 +AC +86 +83 +81 +80 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni21F2 +ENCODING 8690 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +01 +81 +C1 +61 +35 +1D +3D +01 +FF +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni21F3 +ENCODING 8691 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +10 +28 +44 +C6 +44 +44 +44 +C6 +44 +28 +10 +00 +00 +00 +ENDCHAR +STARTCHAR universal +ENCODING 8704 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +C6 +C6 +FE +C6 +6C +6C +38 +38 +10 +10 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2201 +ENCODING 8705 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +3C +66 +60 +60 +60 +60 +60 +66 +3C +00 +00 +ENDCHAR +STARTCHAR partialdiff +ENCODING 8706 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +38 +6C +06 +06 +3E +66 +C6 +C6 +CC +78 +00 +00 +00 +00 +ENDCHAR +STARTCHAR existential +ENCODING 8707 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +FE +06 +06 +06 +7E +06 +06 +06 +06 +FE +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2204 +ENCODING 8708 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +08 +FE +16 +16 +16 +7E +16 +26 +26 +26 +FE +40 +00 +00 +00 +ENDCHAR +STARTCHAR emptyset +ENCODING 8709 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +03 +3E +66 +CF +DB +DB +F3 +66 +7C +C0 +00 +00 +00 +00 +ENDCHAR +STARTCHAR Delta +ENCODING 8710 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +10 +10 +38 +38 +6C +6C +C6 +C6 +C6 +FE +00 +00 +00 +00 +ENDCHAR +STARTCHAR gradient +ENCODING 8711 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +FE +C6 +C6 +C6 +6C +6C +38 +38 +10 +10 +00 +00 +00 +00 +ENDCHAR +STARTCHAR element +ENCODING 8712 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +3E +60 +C0 +C0 +FE +C0 +C0 +60 +3E +00 +00 +00 +00 +ENDCHAR +STARTCHAR notelement +ENCODING 8713 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +04 +3E +64 +C8 +C8 +FE +C8 +D0 +70 +3E +20 +00 +00 +00 +ENDCHAR +STARTCHAR uni220A +ENCODING 8714 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +3E +60 +C0 +FE +C0 +60 +3E +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR suchthat +ENCODING 8715 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +F8 +0C +06 +06 +FE +06 +06 +0C +F8 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni220C +ENCODING 8716 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +08 +F8 +1C +16 +26 +FE +26 +26 +4C +F8 +40 +00 +00 +00 +ENDCHAR +STARTCHAR uni220D +ENCODING 8717 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +F8 +0C +06 +FE +06 +0C +F8 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni220E +ENCODING 8718 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +7E +7E +7E +7E +7E +7E +7E +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR product +ENCODING 8719 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +FF +66 +66 +66 +66 +66 +66 +66 +66 +66 +66 +E7 +00 +00 +ENDCHAR +STARTCHAR uni2210 +ENCODING 8720 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +E7 +66 +66 +66 +66 +66 +66 +66 +66 +66 +66 +FF +00 +00 +ENDCHAR +STARTCHAR summation +ENCODING 8721 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +FF +C1 +60 +30 +18 +0C +0C +18 +30 +60 +C1 +FF +00 +00 +ENDCHAR +STARTCHAR minus +ENCODING 8722 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +7E +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2213 +ENCODING 8723 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +7E +00 +18 +18 +7E +18 +18 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2214 +ENCODING 8724 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +18 +18 +00 +18 +18 +7E +18 +18 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR fraction +ENCODING 8725 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +06 +06 +0C +0C +18 +18 +30 +30 +60 +60 +C0 +C0 +00 +00 +00 +ENDCHAR +STARTCHAR uni2216 +ENCODING 8726 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +C0 +C0 +60 +60 +30 +30 +18 +18 +0C +0C +06 +06 +00 +00 +00 +ENDCHAR +STARTCHAR asteriskmath +ENCODING 8727 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +24 +18 +7E +18 +24 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2218 +ENCODING 8728 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +18 +24 +24 +18 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR periodcentered +ENCODING 8729 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +18 +3C +3C +18 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR radical +ENCODING 8730 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +03 +03 +06 +06 +06 +0C +CC +6C +38 +18 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni221B +ENCODING 8731 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +E3 +33 +66 +36 +E6 +0C +CC +6C +38 +18 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni221C +ENCODING 8732 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +33 +73 +B6 +F6 +36 +0C +CC +6C +38 +18 +00 +00 +00 +00 +ENDCHAR +STARTCHAR proportional +ENCODING 8733 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +76 +D8 +D8 +6E +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR infinity +ENCODING 8734 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +76 +DB +DB +6E +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR orthogonal +ENCODING 8735 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +C0 +C0 +C0 +C0 +C0 +FE +00 +00 +00 +00 +ENDCHAR +STARTCHAR angle +ENCODING 8736 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +02 +06 +0C +18 +30 +60 +FF +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2221 +ENCODING 8737 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +02 +16 +0C +1C +34 +62 +FF +02 +00 +00 +00 +ENDCHAR +STARTCHAR uni2222 +ENCODING 8738 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +10 +0E +38 +E8 +38 +0E +10 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2223 +ENCODING 8739 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +18 +18 +18 +18 +18 +18 +18 +18 +18 +18 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2224 +ENCODING 8740 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +18 +18 +18 +1A +1C +38 +58 +18 +18 +18 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2225 +ENCODING 8741 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +6C +6C +6C +6C +6C +6C +6C +6C +6C +6C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2226 +ENCODING 8742 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +6C +6C +6C +6E +7C +EC +6C +6C +6C +6C +00 +00 +00 +00 +ENDCHAR +STARTCHAR logicaland +ENCODING 8743 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +10 +10 +38 +38 +6C +6C +C6 +C6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR logicalor +ENCODING 8744 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +C6 +C6 +6C +6C +38 +38 +10 +10 +00 +00 +00 +00 +ENDCHAR +STARTCHAR intersection +ENCODING 8745 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +7C +C6 +C6 +C6 +C6 +C6 +C6 +C6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR union +ENCODING 8746 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +C6 +C6 +C6 +C6 +C6 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR integral +ENCODING 8747 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +0C +1A +18 +18 +18 +18 +18 +18 +18 +18 +18 +18 +58 +30 +00 +00 +ENDCHAR +STARTCHAR uni222C +ENCODING 8748 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +33 +66 +66 +66 +66 +66 +66 +66 +66 +66 +66 +66 +66 +CC +00 +00 +ENDCHAR +STARTCHAR uni222D +ENCODING 8749 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +2A +54 +54 +54 +54 +54 +54 +54 +54 +54 +54 +54 +54 +A8 +00 +00 +ENDCHAR +STARTCHAR uni222E +ENCODING 8750 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +0C +1A +18 +18 +3C +5A +99 +99 +5A +3C +18 +18 +58 +30 +00 +00 +ENDCHAR +STARTCHAR uni222F +ENCODING 8751 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +33 +66 +66 +66 +7E +E7 +E7 +E7 +E7 +7E +66 +66 +66 +CC +00 +00 +ENDCHAR +STARTCHAR uni2230 +ENCODING 8752 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +2A +54 +54 +54 +7C +D6 +D6 +D6 +D6 +7C +54 +54 +54 +A8 +00 +00 +ENDCHAR +STARTCHAR uni2231 +ENCODING 8753 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +18 +34 +30 +30 +38 +35 +33 +37 +30 +30 +30 +30 +B0 +60 +00 +00 +ENDCHAR +STARTCHAR uni2232 +ENCODING 8754 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +0C +1A +18 +18 +3C +5A +FA +5A +5A +3C +18 +18 +58 +30 +00 +00 +ENDCHAR +STARTCHAR uni2233 +ENCODING 8755 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +0C +1A +18 +18 +3C +5A +5F +5A +5A +3C +18 +18 +58 +30 +00 +00 +ENDCHAR +STARTCHAR therefore +ENCODING 8756 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +18 +18 +00 +00 +00 +66 +66 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2235 +ENCODING 8757 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +66 +66 +00 +00 +00 +18 +18 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2236 +ENCODING 8758 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +18 +18 +00 +00 +00 +18 +18 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2237 +ENCODING 8759 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +66 +66 +00 +00 +00 +66 +66 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2238 +ENCODING 8760 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +18 +18 +00 +7E +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2239 +ENCODING 8761 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +03 +03 +00 +FC +00 +03 +03 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni223A +ENCODING 8762 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +66 +66 +00 +7E +00 +66 +66 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni223B +ENCODING 8763 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +18 +18 +00 +76 +DC +00 +30 +30 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR similar +ENCODING 8764 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +76 +DC +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni223D +ENCODING 8765 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +DC +76 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni223E +ENCODING 8766 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +72 +DB +DB +4E +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni223F +ENCODING 8767 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +70 +D8 +DB +DB +1B +0E +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2240 +ENCODING 8768 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +1C +30 +30 +30 +18 +0C +0C +0C +38 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2241 +ENCODING 8769 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +08 +08 +10 +76 +DC +10 +20 +20 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2242 +ENCODING 8770 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +FE +00 +76 +DC +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2243 +ENCODING 8771 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +76 +DC +00 +FE +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2244 +ENCODING 8772 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +08 +08 +76 +DC +10 +FE +20 +20 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR congruent +ENCODING 8773 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +76 +DC +00 +FE +00 +FE +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2246 +ENCODING 8774 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +76 +DC +08 +FE +10 +FE +20 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2247 +ENCODING 8775 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +08 +08 +76 +DC +10 +FE +20 +FE +40 +40 +00 +00 +00 +00 +ENDCHAR +STARTCHAR approxequal +ENCODING 8776 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +76 +DC +00 +76 +DC +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2249 +ENCODING 8777 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +08 +08 +76 +DC +10 +76 +DC +20 +20 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni224A +ENCODING 8778 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +76 +DC +00 +76 +DC +00 +FE +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni224B +ENCODING 8779 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +76 +DC +00 +76 +DC +00 +76 +DC +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni224C +ENCODING 8780 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +DC +76 +00 +FE +00 +FE +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni224D +ENCODING 8781 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +C6 +7C +00 +7C +C6 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni224E +ENCODING 8782 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +18 +66 +00 +00 +66 +18 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni224F +ENCODING 8783 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +18 +66 +00 +00 +7E +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2250 +ENCODING 8784 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +18 +18 +00 +7E +00 +00 +7E +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2251 +ENCODING 8785 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +18 +18 +00 +7E +00 +00 +7E +00 +18 +18 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2252 +ENCODING 8786 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +60 +60 +00 +7E +00 +00 +7E +00 +06 +06 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2253 +ENCODING 8787 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +06 +06 +00 +7E +00 +00 +7E +00 +60 +60 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2254 +ENCODING 8788 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +C0 +DF +00 +00 +DF +C0 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2255 +ENCODING 8789 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +03 +FB +00 +00 +FB +03 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2256 +ENCODING 8790 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +FE +28 +FE +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2257 +ENCODING 8791 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +10 +28 +10 +00 +FE +00 +FE +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2258 +ENCODING 8792 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +38 +44 +00 +FE +00 +FE +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2259 +ENCODING 8793 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +10 +28 +44 +00 +FE +00 +FE +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni225A +ENCODING 8794 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +44 +28 +10 +00 +FE +00 +FE +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni225B +ENCODING 8795 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +10 +10 +7C +28 +00 +FE +00 +FE +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni225C +ENCODING 8796 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +10 +28 +44 +7C +00 +FE +00 +FE +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni225D +ENCODING 8797 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +26 +7C +B4 +6C +00 +FE +00 +FE +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni225E +ENCODING 8798 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +68 +54 +54 +00 +FE +00 +FE +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni225F +ENCODING 8799 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +30 +08 +10 +00 +10 +FE +00 +FE +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR notequal +ENCODING 8800 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +04 +08 +7E +08 +10 +7E +10 +20 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR equivalence +ENCODING 8801 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +FE +00 +00 +FE +00 +00 +FE +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2262 +ENCODING 8802 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +04 +08 +FE +08 +10 +FE +10 +20 +FE +20 +40 +00 +00 +00 +ENDCHAR +STARTCHAR uni2263 +ENCODING 8803 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +FE +00 +00 +FE +00 +00 +FE +00 +00 +FE +00 +00 +00 +00 +ENDCHAR +STARTCHAR lessequal +ENCODING 8804 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +0E +38 +E0 +38 +0E +00 +FE +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR greaterequal +ENCODING 8805 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +E0 +38 +0E +38 +E0 +00 +FE +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2266 +ENCODING 8806 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +0E +38 +E0 +38 +0E +00 +FE +00 +FE +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2267 +ENCODING 8807 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +E0 +38 +0E +38 +E0 +00 +FE +00 +FE +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2268 +ENCODING 8808 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +0E +38 +E0 +38 +0E +08 +FE +10 +FE +20 +00 +00 +00 +ENDCHAR +STARTCHAR uni2269 +ENCODING 8809 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +E0 +38 +0E +38 +E0 +08 +FE +10 +FE +20 +00 +00 +00 +ENDCHAR +STARTCHAR uni226A +ENCODING 8810 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +1B +36 +6C +D8 +6C +36 +1B +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni226B +ENCODING 8811 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +D8 +6C +36 +1B +36 +6C +D8 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni226C +ENCODING 8812 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +66 +18 +3C +66 +66 +66 +66 +3C +18 +66 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni226D +ENCODING 8813 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +08 +CE +7C +10 +7C +E6 +20 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni226E +ENCODING 8814 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +04 +04 +0E +38 +E8 +38 +0E +10 +10 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni226F +ENCODING 8815 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +10 +10 +E0 +38 +2E +38 +E0 +40 +40 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2270 +ENCODING 8816 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +04 +04 +0E +38 +E8 +38 +0E +10 +FE +10 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2271 +ENCODING 8817 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +10 +10 +E0 +38 +2E +38 +E0 +40 +FE +40 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2272 +ENCODING 8818 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +0E +38 +E0 +38 +0E +00 +76 +DC +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2273 +ENCODING 8819 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +E0 +38 +0E +38 +E0 +00 +76 +DC +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2274 +ENCODING 8820 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +04 +04 +0E +38 +E8 +38 +0E +10 +76 +DC +20 +20 +00 +00 +ENDCHAR +STARTCHAR uni2275 +ENCODING 8821 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +10 +10 +E0 +38 +2E +38 +E0 +40 +76 +DC +80 +00 +00 +00 +ENDCHAR +STARTCHAR uni2276 +ENCODING 8822 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +0E +38 +E0 +38 +0E +E0 +38 +0E +38 +E0 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2277 +ENCODING 8823 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +E0 +38 +0E +38 +E0 +0E +38 +E0 +38 +0E +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2278 +ENCODING 8824 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +08 +0E +38 +E8 +38 +1E +F0 +38 +2E +38 +E0 +20 +00 +00 +00 +ENDCHAR +STARTCHAR uni2279 +ENCODING 8825 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +08 +E8 +38 +0E +38 +F0 +1E +38 +E0 +38 +2E +20 +00 +00 +00 +ENDCHAR +STARTCHAR uni227A +ENCODING 8826 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +02 +06 +1C +F0 +1C +06 +02 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni227B +ENCODING 8827 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +80 +C0 +70 +1E +70 +C0 +80 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni227C +ENCODING 8828 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +02 +06 +1C +F0 +1C +06 +F2 +1C +06 +02 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni227D +ENCODING 8829 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +80 +C0 +70 +1E +70 +C0 +9E +70 +C0 +80 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni227E +ENCODING 8830 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +02 +06 +1C +F0 +1C +06 +02 +00 +76 +DC +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni227F +ENCODING 8831 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +80 +C0 +70 +1E +70 +C0 +80 +00 +76 +DC +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2280 +ENCODING 8832 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +04 +06 +0C +38 +E8 +38 +1C +16 +10 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2281 +ENCODING 8833 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +10 +D0 +70 +38 +2E +38 +60 +C0 +40 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR propersubset +ENCODING 8834 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +7E +C0 +C0 +C0 +C0 +7E +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR propersuperset +ENCODING 8835 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +FC +06 +06 +06 +06 +FC +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR notsubset +ENCODING 8836 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +04 +7E +C8 +C8 +D0 +D0 +7E +20 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2285 +ENCODING 8837 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +08 +FC +16 +16 +26 +26 +FC +40 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR reflexsubset +ENCODING 8838 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +7E +C0 +C0 +C0 +C0 +7E +00 +FE +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR reflexsuperset +ENCODING 8839 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +FC +06 +06 +06 +06 +FC +00 +FE +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2288 +ENCODING 8840 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +04 +7E +C8 +C8 +D0 +D0 +7E +20 +FE +40 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2289 +ENCODING 8841 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +08 +FC +16 +16 +26 +26 +FC +40 +FE +80 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni228A +ENCODING 8842 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +7E +C0 +C0 +C0 +C0 +7E +08 +FE +10 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni228B +ENCODING 8843 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +FC +06 +06 +06 +06 +FC +10 +FE +20 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni228C +ENCODING 8844 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +82 +92 +A2 +FA +A2 +92 +44 +38 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni228D +ENCODING 8845 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +82 +82 +92 +BA +BA +92 +44 +38 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni228E +ENCODING 8846 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +82 +82 +92 +BA +92 +82 +44 +38 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni228F +ENCODING 8847 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +FE +C0 +C0 +C0 +C0 +FE +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2290 +ENCODING 8848 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +FE +06 +06 +06 +06 +FE +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2291 +ENCODING 8849 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +FE +C0 +C0 +C0 +C0 +FE +00 +FE +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2292 +ENCODING 8850 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +FE +06 +06 +06 +06 +FE +00 +FE +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2293 +ENCODING 8851 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +FE +C6 +C6 +C6 +C6 +C6 +C6 +C6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2294 +ENCODING 8852 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +C6 +C6 +C6 +C6 +C6 +C6 +C6 +FE +00 +00 +00 +00 +ENDCHAR +STARTCHAR circleplus +ENCODING 8853 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +38 +54 +92 +FE +92 +54 +38 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2296 +ENCODING 8854 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +38 +44 +82 +FE +82 +44 +38 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR circlemultiply +ENCODING 8855 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +38 +44 +AA +92 +AA +44 +38 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2298 +ENCODING 8856 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +38 +44 +8A +92 +A2 +44 +38 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2299 +ENCODING 8857 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +38 +44 +92 +BA +92 +44 +38 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni229A +ENCODING 8858 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +38 +44 +92 +AA +92 +44 +38 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni229B +ENCODING 8859 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +38 +54 +D6 +BA +D6 +54 +38 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni229C +ENCODING 8860 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +38 +44 +BA +82 +BA +44 +38 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni229D +ENCODING 8861 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +38 +44 +82 +BA +82 +44 +38 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni229E +ENCODING 8862 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +FE +92 +92 +FE +92 +92 +FE +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni229F +ENCODING 8863 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +FE +82 +82 +FE +82 +82 +FE +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni22A0 +ENCODING 8864 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +FE +C6 +AA +92 +AA +C6 +FE +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni22A1 +ENCODING 8865 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +FE +82 +92 +BA +92 +82 +FE +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni22A2 +ENCODING 8866 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +C0 +C0 +C0 +C0 +FF +C0 +C0 +C0 +C0 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni22A3 +ENCODING 8867 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +03 +03 +03 +03 +FF +03 +03 +03 +03 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni22A4 +ENCODING 8868 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +FF +18 +18 +18 +18 +18 +18 +18 +18 +18 +00 +00 +00 +00 +ENDCHAR +STARTCHAR perpendicular +ENCODING 8869 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +18 +18 +18 +18 +18 +18 +18 +18 +18 +FF +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni22A6 +ENCODING 8870 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +60 +60 +60 +60 +7E +60 +60 +60 +60 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni22A7 +ENCODING 8871 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +60 +60 +60 +7E +60 +7E +60 +60 +60 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni22A8 +ENCODING 8872 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +C0 +C0 +C0 +FF +C0 +FF +C0 +C0 +C0 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni22A9 +ENCODING 8873 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +D8 +D8 +D8 +D8 +DF +D8 +D8 +D8 +D8 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni22AA +ENCODING 8874 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +A8 +A8 +A8 +A8 +AF +A8 +A8 +A8 +A8 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni22AB +ENCODING 8875 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +D8 +D8 +D8 +DF +D8 +DF +D8 +D8 +D8 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni22AC +ENCODING 8876 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +C0 +C2 +C4 +C4 +FF +C8 +C8 +D0 +C0 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni22AD +ENCODING 8877 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +C0 +C4 +C4 +FF +C8 +FF +D0 +D0 +C0 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni22AE +ENCODING 8878 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +D8 +D9 +DA +DA +DF +DA +DA +DC +D8 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni22AF +ENCODING 8879 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +D8 +D9 +DA +DF +DA +DF +DA +DC +D8 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni22B0 +ENCODING 8880 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +0C +06 +1C +F0 +1C +06 +0C +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni22B1 +ENCODING 8881 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +60 +C0 +70 +1E +70 +C0 +60 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni22B2 +ENCODING 8882 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +06 +1E +76 +C6 +76 +1E +06 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni22B3 +ENCODING 8883 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +C0 +F0 +DC +C6 +DC +F0 +C0 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni22B4 +ENCODING 8884 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +06 +1E +76 +C6 +76 +1E +06 +00 +FE +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni22B5 +ENCODING 8885 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +C0 +F0 +DC +C6 +DC +F0 +C0 +00 +FE +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni22B6 +ENCODING 8886 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +42 +BF +42 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni22B7 +ENCODING 8887 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +42 +FD +42 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni22B8 +ENCODING 8888 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +02 +7D +02 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni22B9 +ENCODING 8889 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +10 +10 +00 +C6 +00 +10 +10 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni22BA +ENCODING 8890 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +7E +18 +18 +18 +18 +18 +18 +18 +18 +18 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni22BB +ENCODING 8891 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +C6 +C6 +6C +6C +38 +38 +10 +10 +00 +FE +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni22BC +ENCODING 8892 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +FE +00 +10 +10 +38 +38 +6C +6C +C6 +C6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni22BD +ENCODING 8893 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +FE +00 +C6 +C6 +6C +6C +38 +38 +10 +10 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni22BE +ENCODING 8894 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +C0 +C0 +C0 +F0 +C8 +C4 +C4 +FF +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni22BF +ENCODING 8895 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +03 +07 +0B +13 +23 +43 +83 +FF +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni22C0 +ENCODING 8896 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +10 +10 +38 +38 +6C +6C +C6 +C6 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni22C1 +ENCODING 8897 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +C6 +C6 +6C +6C +38 +38 +10 +10 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni22C2 +ENCODING 8898 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +38 +6C +C6 +C6 +C6 +C6 +C6 +C6 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni22C3 +ENCODING 8899 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +C6 +C6 +C6 +C6 +C6 +C6 +6C +38 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni22C4 +ENCODING 8900 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +10 +38 +6C +38 +10 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR dotmath +ENCODING 8901 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +18 +18 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni22C6 +ENCODING 8902 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +10 +10 +7C +38 +28 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni22C7 +ENCODING 8903 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +92 +44 +28 +92 +28 +44 +92 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni22C8 +ENCODING 8904 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +82 +C6 +AA +92 +AA +C6 +82 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni22C9 +ENCODING 8905 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +82 +C4 +A8 +90 +A8 +C4 +82 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni22CA +ENCODING 8906 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +82 +46 +2A +12 +2A +46 +82 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni22CB +ENCODING 8907 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +80 +40 +20 +10 +28 +44 +82 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni22CC +ENCODING 8908 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +02 +04 +08 +10 +28 +44 +82 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni22CD +ENCODING 8909 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +DC +76 +00 +FE +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni22CE +ENCODING 8910 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +10 +10 +10 +38 +38 +6C +6C +C6 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni22CF +ENCODING 8911 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +C6 +6C +6C +38 +38 +10 +10 +10 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni22D0 +ENCODING 8912 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +3E +60 +CE +D8 +D8 +CE +60 +3E +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni22D1 +ENCODING 8913 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +F8 +0C +E6 +36 +36 +E6 +0C +F8 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni22D2 +ENCODING 8914 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +38 +44 +92 +AA +AA +AA +AA +AA +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni22D3 +ENCODING 8915 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +AA +AA +AA +AA +AA +92 +44 +38 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni22D4 +ENCODING 8916 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +10 +10 +38 +54 +92 +92 +92 +92 +92 +92 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni22D5 +ENCODING 8917 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +18 +18 +18 +7E +18 +18 +7E +18 +18 +18 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni22D6 +ENCODING 8918 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +18 +30 +64 +CE +64 +30 +18 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni22D7 +ENCODING 8919 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +30 +18 +4C +E6 +4C +18 +30 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni22D8 +ENCODING 8920 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +15 +2A +54 +A8 +54 +2A +15 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni22D9 +ENCODING 8921 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +A8 +54 +2A +15 +2A +54 +A8 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni22DA +ENCODING 8922 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +0E +38 +E0 +38 +0E +00 +FE +00 +E0 +38 +0E +38 +E0 +00 +00 +ENDCHAR +STARTCHAR uni22DB +ENCODING 8923 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +E0 +38 +0E +38 +E0 +00 +FE +00 +0E +38 +E0 +38 +0E +00 +00 +ENDCHAR +STARTCHAR uni22DC +ENCODING 8924 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +FE +00 +0E +38 +E0 +38 +0E +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni22DD +ENCODING 8925 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +FE +00 +E0 +38 +0E +38 +E0 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni22DE +ENCODING 8926 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +02 +06 +1C +F2 +06 +1C +F0 +1C +06 +02 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni22DF +ENCODING 8927 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +80 +C0 +70 +9E +C0 +70 +1E +70 +C0 +80 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni22E0 +ENCODING 8928 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +0A +0E +1C +F0 +1C +16 +F2 +1C +26 +22 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni22E1 +ENCODING 8929 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +88 +C8 +70 +1E +70 +D0 +9E +70 +E0 +A0 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni22E2 +ENCODING 8930 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +04 +FE +C8 +C8 +D0 +D0 +FE +20 +FE +40 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni22E3 +ENCODING 8931 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +08 +FE +16 +16 +26 +26 +FE +40 +FE +80 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni22E4 +ENCODING 8932 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +FE +C0 +C0 +C0 +C0 +FE +08 +FE +10 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni22E5 +ENCODING 8933 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +FE +06 +06 +06 +06 +FE +10 +FE +20 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni22E6 +ENCODING 8934 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +0E +38 +E0 +38 +0E +10 +76 +DC +10 +00 +00 +00 +ENDCHAR +STARTCHAR uni22E7 +ENCODING 8935 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +E0 +38 +0E +38 +E0 +10 +76 +DC +10 +00 +00 +00 +ENDCHAR +STARTCHAR uni22E8 +ENCODING 8936 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +02 +06 +1C +F0 +1C +06 +02 +10 +76 +DC +10 +00 +00 +00 +ENDCHAR +STARTCHAR uni22E9 +ENCODING 8937 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +80 +C0 +70 +1E +70 +C0 +80 +10 +76 +DC +10 +00 +00 +00 +ENDCHAR +STARTCHAR uni22EA +ENCODING 8938 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +08 +0E +1E +76 +D6 +76 +1E +26 +20 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni22EB +ENCODING 8939 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +08 +C8 +F0 +DC +D6 +DC +F0 +E0 +20 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni22EC +ENCODING 8940 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +08 +0E +1E +76 +D6 +76 +1E +26 +20 +FE +40 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni22ED +ENCODING 8941 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +08 +C8 +F0 +DC +D6 +DC +F0 +E0 +20 +FE +40 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni22EE +ENCODING 8942 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +18 +18 +00 +00 +18 +18 +00 +00 +18 +18 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni22EF +ENCODING 8943 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +DB +DB +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni22F0 +ENCODING 8944 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +03 +03 +00 +00 +18 +18 +00 +00 +C0 +C0 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni22F1 +ENCODING 8945 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +C0 +C0 +00 +00 +18 +18 +00 +00 +03 +03 +00 +00 +00 +00 +ENDCHAR +STARTCHAR emptyset +ENCODING 8960 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +3D +66 +C7 +CB +D3 +E3 +66 +BC +00 +00 +00 +00 +ENDCHAR +STARTCHAR house +ENCODING 8962 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +10 +38 +6C +C6 +C6 +C6 +FE +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2308 +ENCODING 8968 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +1E +18 +18 +18 +18 +18 +18 +18 +18 +18 +18 +18 +18 +18 +ENDCHAR +STARTCHAR uni2309 +ENCODING 8969 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +78 +18 +18 +18 +18 +18 +18 +18 +18 +18 +18 +18 +18 +18 +ENDCHAR +STARTCHAR uni230A +ENCODING 8970 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +18 +18 +18 +18 +18 +18 +18 +18 +18 +18 +18 +1E +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni230B +ENCODING 8971 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +18 +18 +18 +18 +18 +18 +18 +18 +18 +18 +18 +78 +00 +00 +00 +00 +ENDCHAR +STARTCHAR revlogicalnot +ENCODING 8976 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +FE +C0 +C0 +C0 +C0 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2318 +ENCODING 8984 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +42 +A5 +7E +24 +24 +7E +A5 +42 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR circleplus +ENCODING 8986 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +38 +38 +54 +8A +F6 +82 +54 +38 +38 +00 +00 +00 +00 +ENDCHAR +STARTCHAR H +ENCODING 8987 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +FE +FE +44 +44 +28 +10 +28 +44 +44 +FE +FE +00 +00 +00 +00 +ENDCHAR +STARTCHAR integraltp +ENCODING 8992 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +0E +1B +1B +18 +18 +18 +18 +18 +18 +18 +18 +18 +18 +18 +ENDCHAR +STARTCHAR integralbt +ENCODING 8993 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +18 +18 +18 +18 +18 +18 +18 +18 +D8 +D8 +D8 +70 +00 +00 +00 +00 +ENDCHAR +STARTCHAR angleleft +ENCODING 9001 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +0C +0C +18 +18 +30 +30 +60 +60 +30 +30 +18 +18 +0C +0C +00 +00 +ENDCHAR +STARTCHAR angleright +ENCODING 9002 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +60 +60 +30 +30 +18 +18 +0C +0C +18 +18 +30 +30 +60 +60 +00 +00 +ENDCHAR +STARTCHAR SF110000 +ENCODING 9115 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +03 +06 +0C +0C +18 +18 +18 +30 +30 +30 +30 +30 +30 +30 +30 +ENDCHAR +STARTCHAR SF110000 +ENCODING 9116 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +30 +30 +30 +30 +30 +30 +30 +30 +30 +30 +30 +30 +30 +30 +30 +30 +ENDCHAR +STARTCHAR SF110000 +ENCODING 9117 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +30 +30 +30 +30 +30 +30 +30 +18 +18 +18 +0C +0C +06 +03 +00 +00 +ENDCHAR +STARTCHAR SF110000 +ENCODING 9118 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +C0 +60 +30 +30 +18 +18 +18 +0C +0C +0C +0C +0C +0C +0C +0C +ENDCHAR +STARTCHAR SF110000 +ENCODING 9119 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +0C +0C +0C +0C +0C +0C +0C +0C +0C +0C +0C +0C +0C +0C +0C +0C +ENDCHAR +STARTCHAR SF110000 +ENCODING 9120 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +0C +0C +0C +0C +0C +0C +0C +18 +18 +18 +30 +30 +60 +C0 +00 +00 +ENDCHAR +STARTCHAR SF110000 +ENCODING 9121 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +3F +30 +30 +30 +30 +30 +30 +30 +30 +30 +30 +30 +30 +30 +30 +ENDCHAR +STARTCHAR SF110000 +ENCODING 9122 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +30 +30 +30 +30 +30 +30 +30 +30 +30 +30 +30 +30 +30 +30 +30 +30 +ENDCHAR +STARTCHAR SF110000 +ENCODING 9123 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +30 +30 +30 +30 +30 +30 +30 +30 +30 +30 +30 +30 +30 +3F +00 +00 +ENDCHAR +STARTCHAR SF110000 +ENCODING 9124 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +FC +0C +0C +0C +0C +0C +0C +0C +0C +0C +0C +0C +0C +0C +0C +ENDCHAR +STARTCHAR SF110000 +ENCODING 9125 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +0C +0C +0C +0C +0C +0C +0C +0C +0C +0C +0C +0C +0C +0C +0C +0C +ENDCHAR +STARTCHAR SF110000 +ENCODING 9126 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +0C +0C +0C +0C +0C +0C +0C +0C +0C +0C +0C +0C +0C +FC +00 +00 +ENDCHAR +STARTCHAR SF110000 +ENCODING 9127 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +07 +0C +18 +18 +18 +18 +18 +18 +18 +18 +18 +18 +18 +18 +18 +ENDCHAR +STARTCHAR SF110000 +ENCODING 9128 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +18 +18 +18 +18 +18 +30 +E0 +30 +18 +18 +18 +18 +18 +18 +18 +18 +ENDCHAR +STARTCHAR SF110000 +ENCODING 9129 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +18 +18 +18 +18 +18 +18 +18 +18 +18 +18 +18 +18 +0C +07 +00 +00 +ENDCHAR +STARTCHAR SF110000 +ENCODING 9130 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +18 +18 +18 +18 +18 +18 +18 +18 +18 +18 +18 +18 +18 +18 +18 +18 +ENDCHAR +STARTCHAR SF110000 +ENCODING 9131 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +E0 +30 +18 +18 +18 +18 +18 +18 +18 +18 +18 +18 +18 +18 +18 +ENDCHAR +STARTCHAR SF110000 +ENCODING 9132 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +18 +18 +18 +18 +18 +0C +07 +0C +18 +18 +18 +18 +18 +18 +18 +18 +ENDCHAR +STARTCHAR SF110000 +ENCODING 9133 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +18 +18 +18 +18 +18 +18 +18 +18 +18 +18 +18 +18 +30 +E0 +00 +00 +ENDCHAR +STARTCHAR SF110000 +ENCODING 9134 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +18 +18 +18 +18 +18 +18 +18 +18 +18 +18 +18 +18 +18 +18 +18 +18 +ENDCHAR +STARTCHAR SF100000 +ENCODING 9135 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +FF +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR SF110000 +ENCODING 9136 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +07 +0C +18 +18 +18 +18 +18 +18 +18 +18 +18 +18 +18 +18 +30 +E0 +ENDCHAR +STARTCHAR SF110000 +ENCODING 9137 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +E0 +30 +18 +18 +18 +18 +18 +18 +18 +18 +18 +18 +18 +18 +0C +07 +ENDCHAR +STARTCHAR summation +ENCODING 9138 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +FF +C1 +C0 +60 +60 +60 +60 +30 +30 +30 +30 +18 +18 +18 +ENDCHAR +STARTCHAR summation +ENCODING 9139 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +18 +18 +18 +30 +30 +30 +30 +60 +60 +60 +60 +C0 +C1 +FF +00 +00 +ENDCHAR +STARTCHAR uni2423 +ENCODING 9140 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +FF +C3 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2423 +ENCODING 9141 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +C3 +FF +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2423 +ENCODING 9142 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +C3 +FF +00 +FF +C3 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR SF110000 +ENCODING 9143 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +18 +18 +18 +18 +18 +18 +D8 +D8 +78 +78 +38 +38 +18 +18 +00 +00 +ENDCHAR +STARTCHAR SF110000 +ENCODING 9144 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +C0 +C0 +C0 +C0 +C0 +C0 +C0 +C0 +C0 +C0 +C0 +C0 +C0 +C0 +C0 +C0 +ENDCHAR +STARTCHAR SF110000 +ENCODING 9145 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +ENDCHAR +STARTCHAR SF100000 +ENCODING 9146 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +FF +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR SF100000 +ENCODING 9147 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +FF +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR SF100000 +ENCODING 9148 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +FF +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR SF100000 +ENCODING 9149 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +FF +00 +00 +00 +00 +ENDCHAR +STARTCHAR carriagereturn +ENCODING 9166 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +07 +05 +05 +05 +05 +25 +79 +C2 +7C +20 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2409 +ENCODING 9225 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +D8 +D8 +F8 +D8 +D8 +0F +06 +06 +06 +06 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni240A +ENCODING 9226 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +C0 +C0 +C0 +C0 +F0 +0F +0C +0E +0C +0C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni240B +ENCODING 9227 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +D8 +D8 +F8 +70 +20 +0F +06 +06 +06 +06 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni240C +ENCODING 9228 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +F0 +C0 +E0 +C0 +C0 +0F +0C +0E +0C +0C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni240D +ENCODING 9229 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +70 +C0 +C0 +C0 +70 +1E +1B +1E +1B +1B +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2423 +ENCODING 9251 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +82 +FE +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2424 +ENCODING 9252 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +98 +D8 +F8 +D8 +D8 +0C +0C +0C +0C +0F +00 +00 +00 +00 +ENDCHAR +STARTCHAR question +ENCODING 9254 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +7C +FE +C6 +C6 +60 +30 +30 +00 +30 +30 +00 +00 +00 +00 +ENDCHAR +STARTCHAR SF100000 +ENCODING 9472 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +FF +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2501 +ENCODING 9473 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +FF +FF +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR SF110000 +ENCODING 9474 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +18 +18 +18 +18 +18 +18 +18 +18 +18 +18 +18 +18 +18 +18 +18 +18 +ENDCHAR +STARTCHAR uni2503 +ENCODING 9475 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +1C +1C +1C +1C +1C +1C +1C +1C +1C +1C +1C +1C +1C +1C +1C +1C +ENDCHAR +STARTCHAR uni2504 +ENCODING 9476 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +6D +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2505 +ENCODING 9477 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +6D +6D +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2506 +ENCODING 9478 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +18 +18 +18 +18 +00 +18 +18 +18 +18 +18 +00 +18 +18 +18 +18 +00 +ENDCHAR +STARTCHAR uni2507 +ENCODING 9479 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +1C +1C +1C +1C +00 +1C +1C +1C +1C +1C +00 +1C +1C +1C +1C +00 +ENDCHAR +STARTCHAR uni2508 +ENCODING 9480 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +AA +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2509 +ENCODING 9481 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +AA +AA +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni250A +ENCODING 9482 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +18 +18 +18 +00 +18 +18 +18 +00 +18 +18 +18 +00 +18 +18 +18 +00 +ENDCHAR +STARTCHAR uni250B +ENCODING 9483 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +1C +1C +1C +00 +1C +1C +1C +00 +1C +1C +1C +00 +1C +1C +1C +00 +ENDCHAR +STARTCHAR SF010000 +ENCODING 9484 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +1F +18 +18 +18 +18 +18 +18 +18 +18 +ENDCHAR +STARTCHAR uni250D +ENCODING 9485 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +1F +1F +18 +18 +18 +18 +18 +18 +18 +ENDCHAR +STARTCHAR uni250E +ENCODING 9486 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +1F +1C +1C +1C +1C +1C +1C +1C +1C +ENDCHAR +STARTCHAR uni250F +ENCODING 9487 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +1F +1F +1C +1C +1C +1C +1C +1C +1C +ENDCHAR +STARTCHAR SF030000 +ENCODING 9488 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +F8 +18 +18 +18 +18 +18 +18 +18 +18 +ENDCHAR +STARTCHAR uni2511 +ENCODING 9489 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +F8 +F8 +18 +18 +18 +18 +18 +18 +18 +ENDCHAR +STARTCHAR uni2512 +ENCODING 9490 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +FC +1C +1C +1C +1C +1C +1C +1C +1C +ENDCHAR +STARTCHAR uni2513 +ENCODING 9491 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +FC +FC +1C +1C +1C +1C +1C +1C +1C +ENDCHAR +STARTCHAR SF020000 +ENCODING 9492 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +18 +18 +18 +18 +18 +18 +18 +1F +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2515 +ENCODING 9493 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +18 +18 +18 +18 +18 +18 +18 +1F +1F +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2516 +ENCODING 9494 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +1C +1C +1C +1C +1C +1C +1C +1F +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2517 +ENCODING 9495 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +1C +1C +1C +1C +1C +1C +1C +1F +1F +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR SF040000 +ENCODING 9496 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +18 +18 +18 +18 +18 +18 +18 +F8 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2519 +ENCODING 9497 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +18 +18 +18 +18 +18 +18 +18 +F8 +F8 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni251A +ENCODING 9498 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +1C +1C +1C +1C +1C +1C +1C +FC +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni251B +ENCODING 9499 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +1C +1C +1C +1C +1C +1C +1C +FC +FC +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR SF080000 +ENCODING 9500 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +18 +18 +18 +18 +18 +18 +18 +1F +18 +18 +18 +18 +18 +18 +18 +18 +ENDCHAR +STARTCHAR uni251D +ENCODING 9501 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +18 +18 +18 +18 +18 +18 +18 +1F +1F +18 +18 +18 +18 +18 +18 +18 +ENDCHAR +STARTCHAR uni251E +ENCODING 9502 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +1C +1C +1C +1C +1C +1C +1C +1F +18 +18 +18 +18 +18 +18 +18 +18 +ENDCHAR +STARTCHAR uni251F +ENCODING 9503 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +18 +18 +18 +18 +18 +18 +18 +1F +1C +1C +1C +1C +1C +1C +1C +1C +ENDCHAR +STARTCHAR uni2520 +ENCODING 9504 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +1C +1C +1C +1C +1C +1C +1C +1F +1C +1C +1C +1C +1C +1C +1C +1C +ENDCHAR +STARTCHAR uni2521 +ENCODING 9505 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +1C +1C +1C +1C +1C +1C +1C +1F +1F +18 +18 +18 +18 +18 +18 +18 +ENDCHAR +STARTCHAR uni2522 +ENCODING 9506 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +18 +18 +18 +18 +18 +18 +18 +1F +1F +1C +1C +1C +1C +1C +1C +1C +ENDCHAR +STARTCHAR uni2523 +ENCODING 9507 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +1C +1C +1C +1C +1C +1C +1C +1F +1F +1C +1C +1C +1C +1C +1C +1C +ENDCHAR +STARTCHAR SF090000 +ENCODING 9508 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +18 +18 +18 +18 +18 +18 +18 +F8 +18 +18 +18 +18 +18 +18 +18 +18 +ENDCHAR +STARTCHAR uni2525 +ENCODING 9509 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +18 +18 +18 +18 +18 +18 +18 +F8 +F8 +18 +18 +18 +18 +18 +18 +18 +ENDCHAR +STARTCHAR uni2526 +ENCODING 9510 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +1C +1C +1C +1C +1C +1C +1C +FC +18 +18 +18 +18 +18 +18 +18 +18 +ENDCHAR +STARTCHAR uni2527 +ENCODING 9511 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +18 +18 +18 +18 +18 +18 +18 +FC +1C +1C +1C +1C +1C +1C +1C +1C +ENDCHAR +STARTCHAR uni2528 +ENCODING 9512 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +1C +1C +1C +1C +1C +1C +1C +FC +1C +1C +1C +1C +1C +1C +1C +1C +ENDCHAR +STARTCHAR uni2529 +ENCODING 9513 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +1C +1C +1C +1C +1C +1C +1C +FC +FC +18 +18 +18 +18 +18 +18 +18 +ENDCHAR +STARTCHAR uni252A +ENCODING 9514 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +18 +18 +18 +18 +18 +18 +18 +FC +FC +1C +1C +1C +1C +1C +1C +1C +ENDCHAR +STARTCHAR uni252B +ENCODING 9515 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +1C +1C +1C +1C +1C +1C +1C +FC +FC +1C +1C +1C +1C +1C +1C +1C +ENDCHAR +STARTCHAR SF060000 +ENCODING 9516 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +FF +18 +18 +18 +18 +18 +18 +18 +18 +ENDCHAR +STARTCHAR uni252D +ENCODING 9517 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +FF +F8 +18 +18 +18 +18 +18 +18 +18 +ENDCHAR +STARTCHAR uni252E +ENCODING 9518 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +FF +1F +18 +18 +18 +18 +18 +18 +18 +ENDCHAR +STARTCHAR uni252F +ENCODING 9519 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +FF +FF +18 +18 +18 +18 +18 +18 +18 +ENDCHAR +STARTCHAR uni2530 +ENCODING 9520 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +FF +1C +1C +1C +1C +1C +1C +1C +1C +ENDCHAR +STARTCHAR uni2531 +ENCODING 9521 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +FF +FC +1C +1C +1C +1C +1C +1C +1C +ENDCHAR +STARTCHAR uni2532 +ENCODING 9522 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +FF +1F +1C +1C +1C +1C +1C +1C +1C +ENDCHAR +STARTCHAR uni2533 +ENCODING 9523 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +FF +FF +1C +1C +1C +1C +1C +1C +1C +ENDCHAR +STARTCHAR SF070000 +ENCODING 9524 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +18 +18 +18 +18 +18 +18 +18 +FF +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2535 +ENCODING 9525 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +18 +18 +18 +18 +18 +18 +18 +FF +F8 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2536 +ENCODING 9526 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +18 +18 +18 +18 +18 +18 +18 +FF +1F +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2537 +ENCODING 9527 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +18 +18 +18 +18 +18 +18 +18 +FF +FF +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2538 +ENCODING 9528 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +1C +1C +1C +1C +1C +1C +1C +FF +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2539 +ENCODING 9529 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +1C +1C +1C +1C +1C +1C +1C +FF +FC +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni253A +ENCODING 9530 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +1C +1C +1C +1C +1C +1C +1C +FF +1F +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni253B +ENCODING 9531 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +1C +1C +1C +1C +1C +1C +1C +FF +FF +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR SF050000 +ENCODING 9532 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +18 +18 +18 +18 +18 +18 +18 +FF +18 +18 +18 +18 +18 +18 +18 +18 +ENDCHAR +STARTCHAR uni253D +ENCODING 9533 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +18 +18 +18 +18 +18 +18 +18 +FF +F8 +18 +18 +18 +18 +18 +18 +18 +ENDCHAR +STARTCHAR uni253E +ENCODING 9534 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +18 +18 +18 +18 +18 +18 +18 +FF +1F +18 +18 +18 +18 +18 +18 +18 +ENDCHAR +STARTCHAR uni253F +ENCODING 9535 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +18 +18 +18 +18 +18 +18 +18 +FF +FF +18 +18 +18 +18 +18 +18 +18 +ENDCHAR +STARTCHAR uni2540 +ENCODING 9536 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +1C +1C +1C +1C +1C +1C +1C +FF +18 +18 +18 +18 +18 +18 +18 +18 +ENDCHAR +STARTCHAR uni2541 +ENCODING 9537 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +18 +18 +18 +18 +18 +18 +18 +FF +1C +1C +1C +1C +1C +1C +1C +1C +ENDCHAR +STARTCHAR uni2542 +ENCODING 9538 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +1C +1C +1C +1C +1C +1C +1C +FF +1C +1C +1C +1C +1C +1C +1C +1C +ENDCHAR +STARTCHAR uni2543 +ENCODING 9539 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +1C +1C +1C +1C +1C +1C +1C +FF +FC +18 +18 +18 +18 +18 +18 +18 +ENDCHAR +STARTCHAR uni2544 +ENCODING 9540 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +1C +1C +1C +1C +1C +1C +1C +FF +1F +18 +18 +18 +18 +18 +18 +18 +ENDCHAR +STARTCHAR uni2545 +ENCODING 9541 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +18 +18 +18 +18 +18 +18 +18 +FF +FC +1C +1C +1C +1C +1C +1C +1C +ENDCHAR +STARTCHAR uni2546 +ENCODING 9542 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +18 +18 +18 +18 +18 +18 +18 +FF +1F +1C +1C +1C +1C +1C +1C +1C +ENDCHAR +STARTCHAR uni2547 +ENCODING 9543 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +1C +1C +1C +1C +1C +1C +1C +FF +FF +18 +18 +18 +18 +18 +18 +18 +ENDCHAR +STARTCHAR uni2548 +ENCODING 9544 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +18 +18 +18 +18 +18 +18 +18 +FF +FF +1C +1C +1C +1C +1C +1C +1C +ENDCHAR +STARTCHAR uni2549 +ENCODING 9545 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +1C +1C +1C +1C +1C +1C +1C +FF +FC +1C +1C +1C +1C +1C +1C +1C +ENDCHAR +STARTCHAR uni254A +ENCODING 9546 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +1C +1C +1C +1C +1C +1C +1C +FF +1F +1C +1C +1C +1C +1C +1C +1C +ENDCHAR +STARTCHAR uni254B +ENCODING 9547 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +1C +1C +1C +1C +1C +1C +1C +FF +FF +1C +1C +1C +1C +1C +1C +1C +ENDCHAR +STARTCHAR uni254C +ENCODING 9548 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +EE +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni254D +ENCODING 9549 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +EE +EE +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni254E +ENCODING 9550 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +18 +18 +18 +18 +18 +18 +18 +00 +18 +18 +18 +18 +18 +18 +18 +00 +ENDCHAR +STARTCHAR uni254F +ENCODING 9551 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +1C +1C +1C +1C +1C +1C +1C +00 +1C +1C +1C +1C +1C +1C +1C +00 +ENDCHAR +STARTCHAR SF430000 +ENCODING 9552 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +FF +00 +FF +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR SF240000 +ENCODING 9553 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +36 +36 +36 +36 +36 +36 +36 +36 +36 +36 +36 +36 +36 +36 +36 +36 +ENDCHAR +STARTCHAR SF510000 +ENCODING 9554 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +1F +18 +1F +18 +18 +18 +18 +18 +18 +18 +ENDCHAR +STARTCHAR SF520000 +ENCODING 9555 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +3F +36 +36 +36 +36 +36 +36 +36 +36 +ENDCHAR +STARTCHAR SF390000 +ENCODING 9556 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +3F +30 +37 +36 +36 +36 +36 +36 +36 +36 +ENDCHAR +STARTCHAR SF220000 +ENCODING 9557 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +F8 +18 +F8 +18 +18 +18 +18 +18 +18 +18 +ENDCHAR +STARTCHAR SF210000 +ENCODING 9558 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +FE +36 +36 +36 +36 +36 +36 +36 +36 +ENDCHAR +STARTCHAR SF250000 +ENCODING 9559 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +FE +06 +F6 +36 +36 +36 +36 +36 +36 +36 +ENDCHAR +STARTCHAR SF500000 +ENCODING 9560 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +18 +18 +18 +18 +18 +18 +1F +18 +1F +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR SF490000 +ENCODING 9561 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +36 +36 +36 +36 +36 +36 +36 +3F +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR SF380000 +ENCODING 9562 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +36 +36 +36 +36 +36 +36 +37 +30 +3F +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR SF280000 +ENCODING 9563 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +18 +18 +18 +18 +18 +18 +F8 +18 +F8 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR SF270000 +ENCODING 9564 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +36 +36 +36 +36 +36 +36 +36 +FE +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR SF260000 +ENCODING 9565 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +36 +36 +36 +36 +36 +36 +F6 +06 +FE +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR SF360000 +ENCODING 9566 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +18 +18 +18 +18 +18 +18 +1F +18 +1F +18 +18 +18 +18 +18 +18 +18 +ENDCHAR +STARTCHAR SF370000 +ENCODING 9567 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +36 +36 +36 +36 +36 +36 +36 +37 +36 +36 +36 +36 +36 +36 +36 +36 +ENDCHAR +STARTCHAR SF420000 +ENCODING 9568 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +36 +36 +36 +36 +36 +36 +37 +30 +37 +36 +36 +36 +36 +36 +36 +36 +ENDCHAR +STARTCHAR SF190000 +ENCODING 9569 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +18 +18 +18 +18 +18 +18 +F8 +18 +F8 +18 +18 +18 +18 +18 +18 +18 +ENDCHAR +STARTCHAR SF200000 +ENCODING 9570 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +36 +36 +36 +36 +36 +36 +36 +F6 +36 +36 +36 +36 +36 +36 +36 +36 +ENDCHAR +STARTCHAR SF230000 +ENCODING 9571 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +36 +36 +36 +36 +36 +36 +F6 +06 +F6 +36 +36 +36 +36 +36 +36 +36 +ENDCHAR +STARTCHAR SF470000 +ENCODING 9572 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +FF +00 +FF +18 +18 +18 +18 +18 +18 +18 +ENDCHAR +STARTCHAR SF480000 +ENCODING 9573 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +FF +36 +36 +36 +36 +36 +36 +36 +36 +ENDCHAR +STARTCHAR SF410000 +ENCODING 9574 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +FF +00 +F7 +36 +36 +36 +36 +36 +36 +36 +ENDCHAR +STARTCHAR SF450000 +ENCODING 9575 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +18 +18 +18 +18 +18 +18 +FF +00 +FF +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR SF460000 +ENCODING 9576 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +36 +36 +36 +36 +36 +36 +36 +FF +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR SF400000 +ENCODING 9577 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +36 +36 +36 +36 +36 +36 +F7 +00 +FF +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR SF540000 +ENCODING 9578 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +18 +18 +18 +18 +18 +18 +FF +18 +FF +18 +18 +18 +18 +18 +18 +18 +ENDCHAR +STARTCHAR SF530000 +ENCODING 9579 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +36 +36 +36 +36 +36 +36 +36 +FF +36 +36 +36 +36 +36 +36 +36 +36 +ENDCHAR +STARTCHAR SF440000 +ENCODING 9580 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +36 +36 +36 +36 +36 +36 +F7 +00 +F7 +36 +36 +36 +36 +36 +36 +36 +ENDCHAR +STARTCHAR uni256D +ENCODING 9581 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +03 +0E +0C +18 +18 +18 +18 +18 +18 +ENDCHAR +STARTCHAR uni256E +ENCODING 9582 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +C0 +70 +30 +18 +18 +18 +18 +18 +18 +ENDCHAR +STARTCHAR uni256F +ENCODING 9583 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +18 +18 +18 +18 +18 +30 +70 +C0 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2570 +ENCODING 9584 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +18 +18 +18 +18 +18 +0C +0E +03 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2571 +ENCODING 9585 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +01 +01 +02 +02 +04 +04 +08 +08 +10 +10 +20 +20 +40 +40 +80 +80 +ENDCHAR +STARTCHAR uni2572 +ENCODING 9586 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +80 +80 +40 +40 +20 +20 +10 +10 +08 +08 +04 +04 +02 +02 +01 +01 +ENDCHAR +STARTCHAR uni2573 +ENCODING 9587 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +81 +81 +42 +42 +24 +24 +18 +18 +18 +18 +24 +24 +42 +42 +81 +81 +ENDCHAR +STARTCHAR uni2574 +ENCODING 9588 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +F8 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2575 +ENCODING 9589 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +18 +18 +18 +18 +18 +18 +18 +18 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2576 +ENCODING 9590 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +1F +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2577 +ENCODING 9591 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +18 +18 +18 +18 +18 +18 +18 +18 +18 +ENDCHAR +STARTCHAR uni2578 +ENCODING 9592 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +FC +FC +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2579 +ENCODING 9593 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +1C +1C +1C +1C +1C +1C +1C +1C +1C +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni257A +ENCODING 9594 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +1F +1F +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni257B +ENCODING 9595 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +1C +1C +1C +1C +1C +1C +1C +1C +1C +ENDCHAR +STARTCHAR uni257C +ENCODING 9596 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +FF +1F +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni257D +ENCODING 9597 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +18 +18 +18 +18 +18 +18 +18 +1C +1C +1C +1C +1C +1C +1C +1C +1C +ENDCHAR +STARTCHAR uni257E +ENCODING 9598 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +FF +FC +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni257F +ENCODING 9599 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +1C +1C +1C +1C +1C +1C +1C +1C +1C +18 +18 +18 +18 +18 +18 +18 +ENDCHAR +STARTCHAR upblock +ENCODING 9600 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +FF +FF +FF +FF +FF +FF +FF +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2581 +ENCODING 9601 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +FF +FF +ENDCHAR +STARTCHAR uni2582 +ENCODING 9602 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +FF +FF +FF +FF +ENDCHAR +STARTCHAR uni2583 +ENCODING 9603 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +FF +FF +FF +FF +FF +FF +ENDCHAR +STARTCHAR dnblock +ENCODING 9604 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +FF +FF +FF +FF +FF +FF +FF +FF +ENDCHAR +STARTCHAR uni2585 +ENCODING 9605 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +FF +FF +FF +FF +FF +FF +FF +FF +FF +FF +ENDCHAR +STARTCHAR uni2586 +ENCODING 9606 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +FF +FF +FF +FF +FF +FF +FF +FF +FF +FF +FF +FF +ENDCHAR +STARTCHAR uni2587 +ENCODING 9607 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +FF +FF +FF +FF +FF +FF +FF +FF +FF +FF +FF +FF +FF +FF +ENDCHAR +STARTCHAR block +ENCODING 9608 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +FF +FF +FF +FF +FF +FF +FF +FF +FF +FF +FF +FF +FF +FF +FF +FF +ENDCHAR +STARTCHAR uni2589 +ENCODING 9609 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +FE +FE +FE +FE +FE +FE +FE +FE +FE +FE +FE +FE +FE +FE +FE +FE +ENDCHAR +STARTCHAR uni258A +ENCODING 9610 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +FC +FC +FC +FC +FC +FC +FC +FC +FC +FC +FC +FC +FC +FC +FC +FC +ENDCHAR +STARTCHAR uni258B +ENCODING 9611 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +F8 +F8 +F8 +F8 +F8 +F8 +F8 +F8 +F8 +F8 +F8 +F8 +F8 +F8 +F8 +F8 +ENDCHAR +STARTCHAR lfblock +ENCODING 9612 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +F0 +F0 +F0 +F0 +F0 +F0 +F0 +F0 +F0 +F0 +F0 +F0 +F0 +F0 +F0 +F0 +ENDCHAR +STARTCHAR uni258D +ENCODING 9613 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +E0 +E0 +E0 +E0 +E0 +E0 +E0 +E0 +E0 +E0 +E0 +E0 +E0 +E0 +E0 +E0 +ENDCHAR +STARTCHAR uni258E +ENCODING 9614 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +C0 +C0 +C0 +C0 +C0 +C0 +C0 +C0 +C0 +C0 +C0 +C0 +C0 +C0 +C0 +C0 +ENDCHAR +STARTCHAR uni258F +ENCODING 9615 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +80 +80 +80 +80 +80 +80 +80 +80 +80 +80 +80 +80 +80 +80 +80 +80 +ENDCHAR +STARTCHAR rtblock +ENCODING 9616 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +0F +0F +0F +0F +0F +0F +0F +0F +0F +0F +0F +0F +0F +0F +0F +0F +ENDCHAR +STARTCHAR ltshade +ENCODING 9617 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +11 +44 +11 +44 +11 +44 +11 +44 +11 +44 +11 +44 +11 +44 +11 +44 +ENDCHAR +STARTCHAR shade +ENCODING 9618 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +55 +AA +55 +AA +55 +AA +55 +AA +55 +AA +55 +AA +55 +AA +55 +AA +ENDCHAR +STARTCHAR dkshade +ENCODING 9619 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +DD +77 +DD +77 +DD +77 +DD +77 +DD +77 +DD +77 +DD +77 +DD +77 +ENDCHAR +STARTCHAR uni2594 +ENCODING 9620 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +FF +FF +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2595 +ENCODING 9621 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +ENDCHAR +STARTCHAR filledbox +ENCODING 9632 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +FE +FE +FE +FE +FE +FE +FE +FE +FE +00 +00 +00 +00 +ENDCHAR +STARTCHAR H22073 +ENCODING 9633 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +FE +82 +82 +82 +82 +82 +82 +82 +FE +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni25A2 +ENCODING 9634 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +7C +82 +82 +82 +82 +82 +82 +82 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni25A3 +ENCODING 9635 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +FE +82 +BA +BA +BA +BA +BA +82 +FE +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni25A4 +ENCODING 9636 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +FE +82 +FE +82 +FE +82 +FE +82 +FE +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni25A5 +ENCODING 9637 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +FE +AA +AA +AA +AA +AA +AA +AA +FE +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni25A6 +ENCODING 9638 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +FE +AA +FE +AA +FE +AA +FE +AA +FE +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni25A7 +ENCODING 9639 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +FE +8A +C6 +A2 +92 +8A +C6 +A2 +FE +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni25A8 +ENCODING 9640 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +FE +A2 +C6 +8A +92 +A2 +C6 +8A +FE +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni25A9 +ENCODING 9641 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +FE +AA +C6 +AA +92 +AA +C6 +AA +FE +00 +00 +00 +00 +ENDCHAR +STARTCHAR H18543 +ENCODING 9642 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +7C +7C +7C +7C +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR H18551 +ENCODING 9643 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +7C +44 +44 +44 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR filledrect +ENCODING 9644 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +FE +FE +FE +FE +FE +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni25AD +ENCODING 9645 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +FE +82 +82 +82 +FE +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni25AE +ENCODING 9646 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +FE +FE +FE +FE +FE +FE +FE +FE +FE +FE +FE +FE +00 +00 +ENDCHAR +STARTCHAR uni25AF +ENCODING 9647 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +FE +82 +82 +82 +82 +82 +82 +82 +82 +82 +82 +FE +00 +00 +ENDCHAR +STARTCHAR uni25B0 +ENCODING 9648 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +7E +7E +7E +FC +FC +FC +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni25B1 +ENCODING 9649 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +7E +42 +42 +84 +84 +FC +00 +00 +00 +00 +ENDCHAR +STARTCHAR triagup +ENCODING 9650 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +10 +38 +38 +7C +7C +FE +FE +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni25B3 +ENCODING 9651 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +10 +28 +28 +44 +44 +82 +FE +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni25B4 +ENCODING 9652 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +10 +38 +38 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni25B5 +ENCODING 9653 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +10 +28 +28 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni25B6 +ENCODING 9654 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +80 +C0 +E0 +F0 +F8 +FC +F8 +F0 +E0 +C0 +80 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni25B7 +ENCODING 9655 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +80 +C0 +A0 +90 +88 +84 +88 +90 +A0 +C0 +80 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni25B8 +ENCODING 9656 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +40 +70 +78 +70 +40 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni25B9 +ENCODING 9657 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +40 +70 +48 +70 +40 +00 +00 +00 +00 +ENDCHAR +STARTCHAR triagrt +ENCODING 9658 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +80 +E0 +F8 +FE +F8 +E0 +80 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni25BB +ENCODING 9659 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +80 +E0 +98 +86 +98 +E0 +80 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR triagdn +ENCODING 9660 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +FE +FE +7C +7C +38 +38 +10 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni25BD +ENCODING 9661 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +FE +82 +44 +44 +28 +28 +10 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni25BE +ENCODING 9662 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +7C +38 +38 +10 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni25BF +ENCODING 9663 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +7C +28 +28 +10 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni25C0 +ENCODING 9664 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +02 +06 +0E +1E +3E +7E +3E +1E +0E +06 +02 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni25C1 +ENCODING 9665 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +02 +06 +0A +12 +22 +42 +22 +12 +0A +06 +02 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni25C2 +ENCODING 9666 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +08 +38 +78 +38 +08 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni25C3 +ENCODING 9667 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +08 +38 +48 +38 +08 +00 +00 +00 +00 +ENDCHAR +STARTCHAR triaglf +ENCODING 9668 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +02 +0E +3E +FE +3E +0E +02 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni25C5 +ENCODING 9669 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +02 +0E +32 +C2 +32 +0E +02 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni25C6 +ENCODING 9670 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +10 +38 +7C +7C +FE +FE +7C +7C +38 +10 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni25C7 +ENCODING 9671 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +10 +28 +44 +44 +82 +82 +44 +44 +28 +10 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni25C8 +ENCODING 9672 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +10 +28 +44 +54 +BA +BA +54 +44 +28 +10 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni25C9 +ENCODING 9673 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +3C +42 +99 +BD +BD +BD +BD +99 +42 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR lozenge +ENCODING 9674 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +10 +28 +28 +44 +82 +82 +44 +28 +28 +10 +00 +00 +00 +00 +ENDCHAR +STARTCHAR circle +ENCODING 9675 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +3C +42 +81 +81 +81 +81 +81 +81 +42 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni25CC +ENCODING 9676 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +14 +40 +01 +80 +01 +80 +01 +80 +02 +28 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni25CD +ENCODING 9677 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +3C +66 +A5 +A5 +A5 +A5 +A5 +A5 +66 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni25CE +ENCODING 9678 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +3C +42 +99 +A5 +A5 +A5 +A5 +99 +42 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR H18533 +ENCODING 9679 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +3C +7E +FF +FF +FF +FF +FF +FF +7E +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni25D0 +ENCODING 9680 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +3C +72 +F1 +F1 +F1 +F1 +F1 +F1 +72 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni25D1 +ENCODING 9681 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +3C +4E +8F +8F +8F +8F +8F +8F +4E +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni25D2 +ENCODING 9682 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +3C +42 +81 +81 +81 +FF +FF +FF +7E +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni25D3 +ENCODING 9683 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +3C +7E +FF +FF +FF +81 +81 +81 +42 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni25D4 +ENCODING 9684 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +3C +4E +8F +8F +8F +81 +81 +81 +42 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni25D5 +ENCODING 9685 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +3C +4E +8F +8F +8F +FF +FF +FF +7E +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni25D6 +ENCODING 9686 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +30 +70 +F0 +F0 +F0 +F0 +F0 +F0 +70 +30 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni25D7 +ENCODING 9687 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +0C +0E +0F +0F +0F +0F +0F +0F +0E +0C +00 +00 +00 +00 +ENDCHAR +STARTCHAR invbullet +ENCODING 9688 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +FF +FF +FF +FF +FF +FF +E7 +C3 +C3 +E7 +FF +FF +FF +FF +FF +FF +ENDCHAR +STARTCHAR invcircle +ENCODING 9689 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +FF +FF +C3 +BD +7E +7E +7E +7E +7E +7E +BD +C3 +FF +FF +FF +FF +ENDCHAR +STARTCHAR uni25DA +ENCODING 9690 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +FF +FF +C3 +BD +7E +7E +7E +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni25DB +ENCODING 9691 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +7E +7E +7E +BD +C3 +FF +FF +FF +FF +ENDCHAR +STARTCHAR uni25DC +ENCODING 9692 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +30 +40 +80 +80 +80 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni25DD +ENCODING 9693 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +0C +02 +01 +01 +01 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni25DE +ENCODING 9694 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +01 +01 +01 +02 +0C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni25DF +ENCODING 9695 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +80 +80 +80 +40 +30 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni25E0 +ENCODING 9696 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +3C +42 +81 +81 +81 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni25E1 +ENCODING 9697 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +81 +81 +81 +42 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni25E2 +ENCODING 9698 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +01 +01 +03 +03 +07 +07 +0F +0F +1F +1F +3F +3F +7F +7F +FF +FF +ENDCHAR +STARTCHAR uni25E3 +ENCODING 9699 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +80 +80 +C0 +C0 +E0 +E0 +F0 +F0 +F8 +F8 +FC +FC +FE +FE +FF +FF +ENDCHAR +STARTCHAR uni25E4 +ENCODING 9700 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +FF +FF +FE +FE +FC +FC +F8 +F8 +F0 +F0 +E0 +E0 +C0 +C0 +80 +80 +ENDCHAR +STARTCHAR uni25E5 +ENCODING 9701 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +FF +FF +7F +7F +3F +3F +1F +1F +0F +0F +07 +07 +03 +03 +01 +01 +ENDCHAR +STARTCHAR openbullet +ENCODING 9702 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +3C +66 +42 +42 +66 +3C +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni25E7 +ENCODING 9703 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +FF +F1 +F1 +F1 +F1 +F1 +F1 +F1 +F1 +FF +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni25E8 +ENCODING 9704 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +FF +8F +8F +8F +8F +8F +8F +8F +8F +FF +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni25E9 +ENCODING 9705 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +FF +FF +FD +F9 +F1 +F1 +E1 +C1 +81 +FF +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni25EA +ENCODING 9706 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +FF +81 +83 +87 +8F +8F +9F +BF +FF +FF +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni25EB +ENCODING 9707 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +FF +99 +99 +99 +99 +99 +99 +99 +99 +FF +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni25EC +ENCODING 9708 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +10 +10 +28 +28 +44 +44 +92 +82 +FE +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni25ED +ENCODING 9709 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +10 +10 +38 +38 +74 +74 +F2 +F2 +FE +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni25EE +ENCODING 9710 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +10 +10 +38 +38 +5C +5C +9E +9E +FE +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni25EF +ENCODING 9711 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +3C +42 +81 +81 +81 +81 +81 +81 +81 +42 +3C +00 +00 +00 +ENDCHAR +STARTCHAR uni25F0 +ENCODING 9712 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +FE +92 +92 +92 +F2 +82 +82 +82 +FE +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni25F1 +ENCODING 9713 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +FE +82 +82 +82 +F2 +92 +92 +92 +FE +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni25F2 +ENCODING 9714 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +FE +82 +82 +82 +9E +92 +92 +92 +FE +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni25F3 +ENCODING 9715 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +FE +92 +92 +92 +9E +82 +82 +82 +FE +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni25F4 +ENCODING 9716 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +3C +4A +89 +89 +89 +F9 +81 +81 +42 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni25F5 +ENCODING 9717 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +3C +42 +81 +81 +F9 +89 +89 +89 +4A +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni25F6 +ENCODING 9718 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +3C +42 +81 +81 +9F +91 +91 +91 +52 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni25F7 +ENCODING 9719 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +3C +52 +91 +91 +91 +9F +81 +81 +42 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2600 +ENCODING 9728 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +10 +10 +54 +38 +FE +38 +54 +10 +10 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2602 +ENCODING 9729 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +30 +7C +FE +FF +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2601 +ENCODING 9730 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +38 +7C +FE +10 +10 +10 +10 +14 +08 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2605 +ENCODING 9733 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +10 +10 +38 +FE +7C +38 +6C +44 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2606 +ENCODING 9734 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +10 +10 +28 +EE +44 +54 +6C +44 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2607 +ENCODING 9735 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +08 +18 +30 +60 +C0 +60 +34 +1C +3C +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2608 +ENCODING 9736 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +FE +C6 +CC +D8 +F0 +D8 +CD +C7 +CF +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2609 +ENCODING 9737 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +38 +44 +82 +92 +82 +44 +38 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni260A +ENCODING 9738 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +18 +24 +42 +42 +42 +A5 +A5 +42 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni260B +ENCODING 9739 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +42 +A5 +A5 +42 +42 +42 +24 +18 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni260C +ENCODING 9740 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +06 +0C +78 +CC +CC +CC +78 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni260D +ENCODING 9741 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +1C +36 +36 +1C +18 +30 +70 +D8 +D8 +70 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2610 +ENCODING 9744 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +FE +82 +82 +82 +82 +82 +82 +FE +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2611 +ENCODING 9745 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +FE +82 +86 +8A +BA +92 +82 +FE +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2612 +ENCODING 9746 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +FE +82 +EE +BA +BA +EE +82 +FE +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2613 +ENCODING 9747 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +82 +C6 +6C +7C +38 +7C +6C +C6 +82 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2620 +ENCODING 9760 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +7C +82 +AA +82 +44 +7C +44 +38 +00 +44 +C6 +38 +C6 +44 +00 +ENDCHAR +STARTCHAR uni2622 +ENCODING 9762 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +38 +44 +EE +FE +92 +BA +7C +38 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2626 +ENCODING 9766 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +18 +7E +18 +18 +FF +18 +1E +78 +18 +18 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2628 +ENCODING 9768 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +18 +7E +18 +18 +FF +18 +18 +18 +18 +18 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2629 +ENCODING 9769 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +38 +10 +10 +92 +FE +92 +10 +10 +38 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni262A +ENCODING 9770 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +3C +72 +E0 +C4 +DF +CE +CA +E0 +72 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni262B +ENCODING 9771 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +54 +28 +54 +AA +AA +AA +AA +54 +38 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni262E +ENCODING 9774 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +3C +5A +99 +99 +99 +BD +FF +DB +5A +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni262F +ENCODING 9775 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +3C +42 +81 +85 +B1 +F9 +FF +DF +7E +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2630 +ENCODING 9776 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +FE +FE +00 +00 +FE +FE +00 +00 +FE +FE +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2631 +ENCODING 9777 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +EE +EE +00 +00 +FE +FE +00 +00 +FE +FE +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2632 +ENCODING 9778 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +FE +FE +00 +00 +EE +EE +00 +00 +FE +FE +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2633 +ENCODING 9779 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +EE +EE +00 +00 +EE +EE +00 +00 +FE +FE +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2634 +ENCODING 9780 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +FE +FE +00 +00 +FE +FE +00 +00 +EE +EE +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2635 +ENCODING 9781 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +EE +EE +00 +00 +FE +FE +00 +00 +EE +EE +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2636 +ENCODING 9782 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +FE +FE +00 +00 +EE +EE +00 +00 +EE +EE +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2637 +ENCODING 9783 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +EE +EE +00 +00 +EE +EE +00 +00 +EE +EE +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2639 +ENCODING 9785 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +7E +81 +A5 +81 +81 +81 +99 +A5 +81 +7E +00 +00 +00 +00 +ENDCHAR +STARTCHAR smileface +ENCODING 9786 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +7E +81 +A5 +81 +81 +A5 +99 +81 +81 +7E +00 +00 +00 +00 +ENDCHAR +STARTCHAR invsmileface +ENCODING 9787 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +7E +FF +DB +FF +FF +DB +E7 +FF +FF +7E +00 +00 +00 +00 +ENDCHAR +STARTCHAR sun +ENCODING 9788 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +10 +10 +54 +28 +C6 +28 +54 +10 +10 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni263D +ENCODING 9789 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +78 +14 +0A +0A +0A +0A +0A +0A +14 +78 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni263E +ENCODING 9790 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +1E +28 +50 +50 +50 +50 +50 +50 +28 +1E +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni263F +ENCODING 9791 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +66 +66 +3C +66 +66 +66 +66 +3C +18 +7E +18 +18 +00 +00 +00 +ENDCHAR +STARTCHAR female +ENCODING 9792 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +3C +66 +66 +66 +66 +3C +18 +7E +18 +18 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2641 +ENCODING 9793 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +18 +18 +7E +18 +3C +66 +66 +66 +66 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR male +ENCODING 9794 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +1E +06 +0E +1A +78 +CC +CC +CC +CC +78 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2643 +ENCODING 9795 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +03 +03 +7B +CF +CF +CF +0F +1B +33 +FF +03 +03 +03 +00 +00 +ENDCHAR +STARTCHAR uni2644 +ENCODING 9796 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +60 +F0 +60 +6E +73 +63 +63 +66 +66 +63 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2645 +ENCODING 9797 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +D6 +54 +54 +7C +54 +54 +D6 +38 +44 +44 +38 +00 +00 +00 +ENDCHAR +STARTCHAR uni2646 +ENCODING 9798 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +18 +3C +DB +DB +DB +DB +7E +3C +18 +3C +18 +18 +00 +00 +ENDCHAR +STARTCHAR uni2647 +ENCODING 9799 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +F8 +CC +CC +CC +CC +F8 +C0 +C0 +C0 +C0 +FE +00 +00 +00 +ENDCHAR +STARTCHAR uni2648 +ENCODING 9800 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +42 +A5 +A5 +3C +3C +18 +18 +18 +18 +18 +18 +00 +00 +00 +ENDCHAR +STARTCHAR uni2649 +ENCODING 9801 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +C3 +66 +66 +66 +66 +3C +66 +66 +66 +66 +3C +00 +00 +ENDCHAR +STARTCHAR uni264A +ENCODING 9802 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +C3 +7E +66 +66 +66 +66 +66 +66 +7E +C3 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni264B +ENCODING 9803 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +7E +DB +D8 +70 +00 +00 +0E +1B +DB +7E +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni264C +ENCODING 9804 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +1E +33 +33 +33 +33 +1B +7B +DB +DB +73 +03 +01 +00 +00 +ENDCHAR +STARTCHAR uni264D +ENCODING 9805 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +94 +7C +55 +57 +55 +55 +55 +55 +55 +55 +06 +0B +00 +00 +ENDCHAR +STARTCHAR uni264E +ENCODING 9806 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +3C +66 +66 +66 +66 +24 +E7 +00 +FF +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni264F +ENCODING 9807 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +94 +7C +54 +54 +54 +54 +54 +54 +54 +54 +04 +03 +00 +00 +ENDCHAR +STARTCHAR uni2650 +ENCODING 9808 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +1F +07 +8F +DB +73 +70 +D8 +88 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2651 +ENCODING 9809 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +90 +50 +70 +68 +48 +48 +4E +49 +09 +0E +10 +20 +00 +00 +ENDCHAR +STARTCHAR uni2652 +ENCODING 9810 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +2A +7E +AA +00 +00 +2A +7E +AA +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2653 +ENCODING 9811 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +C3 +66 +66 +66 +66 +FF +66 +66 +66 +66 +C3 +00 +00 +00 +ENDCHAR +STARTCHAR spade +ENCODING 9824 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +18 +3C +7E +FF +FF +7E +18 +18 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2661 +ENCODING 9825 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +6C +92 +82 +82 +82 +44 +28 +10 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2662 +ENCODING 9826 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +10 +28 +44 +82 +44 +28 +10 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR club +ENCODING 9827 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +18 +3C +3C +E7 +E7 +E7 +18 +18 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2664 +ENCODING 9828 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +18 +24 +42 +81 +81 +66 +18 +18 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR heart +ENCODING 9829 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +6C +FE +FE +FE +FE +7C +38 +10 +00 +00 +00 +00 +ENDCHAR +STARTCHAR diamond +ENCODING 9830 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +10 +38 +7C +FE +7C +38 +10 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2667 +ENCODING 9831 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +18 +24 +3C +E7 +A5 +E7 +18 +18 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2669 +ENCODING 9833 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +18 +18 +18 +18 +18 +18 +18 +38 +78 +70 +00 +00 +00 +00 +ENDCHAR +STARTCHAR musicalnote +ENCODING 9834 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +30 +3C +3E +32 +30 +30 +30 +70 +F0 +E0 +00 +00 +00 +00 +ENDCHAR +STARTCHAR musicalnotedbl +ENCODING 9835 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +70 +7F +6F +63 +63 +63 +63 +E3 +E7 +C7 +06 +00 +00 +00 +ENDCHAR +STARTCHAR uni266C +ENCODING 9836 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +7F +63 +7F +63 +63 +63 +63 +63 +E7 +E7 +C6 +00 +00 +00 +ENDCHAR +STARTCHAR uni266D +ENCODING 9837 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +C0 +C0 +C0 +C0 +CC +DE +E6 +C4 +D8 +E0 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni266E +ENCODING 9838 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +40 +40 +44 +5C +74 +44 +44 +5C +74 +44 +04 +04 +00 +00 +ENDCHAR +STARTCHAR uni266F +ENCODING 9839 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +04 +04 +46 +5C +74 +C4 +46 +5C +74 +C4 +40 +40 +00 +00 +ENDCHAR +STARTCHAR ff +ENCODING 64256 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +3B +66 +66 +66 +FF +66 +66 +66 +66 +FF +00 +00 +00 +00 +ENDCHAR +STARTCHAR fi +ENCODING 64257 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +3C +6E +66 +60 +FE +66 +66 +66 +66 +FF +00 +00 +00 +00 +ENDCHAR +STARTCHAR fl +ENCODING 64258 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +3E +6E +66 +66 +FE +66 +66 +66 +66 +FF +00 +00 +00 +00 +ENDCHAR +STARTCHAR ffi +ENCODING 64259 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +6E +DB +DB +D8 +FF +DB +DB +DB +DB +FF +00 +00 +00 +00 +ENDCHAR +STARTCHAR ffl +ENCODING 64260 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +6F +DB +DB +DB +FF +DB +DB +DB +DB +FF +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFB05 +ENCODING 64261 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +38 +6C +6C +6F +6C +6C +6C +6C +6D +F6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFB50 +ENCODING 64336 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +06 +29 +5E +00 +04 +04 +04 +04 +04 +04 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFB51 +ENCODING 64337 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +06 +29 +5E +00 +04 +04 +04 +04 +04 +03 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFB52 +ENCODING 64338 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +40 +81 +81 +7E +00 +08 +00 +08 +00 +00 +00 +ENDCHAR +STARTCHAR uniFB53 +ENCODING 64339 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +40 +80 +81 +7E +00 +08 +00 +08 +00 +00 +00 +ENDCHAR +STARTCHAR uniFB54 +ENCODING 64340 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +08 +04 +04 +F8 +00 +08 +00 +08 +00 +00 +00 +ENDCHAR +STARTCHAR uniFB55 +ENCODING 64341 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +08 +08 +F7 +00 +08 +00 +08 +00 +00 +00 +ENDCHAR +STARTCHAR uniFB56 +ENCODING 64342 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +40 +81 +81 +7E +00 +14 +00 +08 +00 +00 +00 +ENDCHAR +STARTCHAR uniFB57 +ENCODING 64343 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +40 +80 +81 +7E +00 +14 +00 +08 +00 +00 +00 +ENDCHAR +STARTCHAR uniFB58 +ENCODING 64344 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +08 +04 +04 +F8 +00 +14 +00 +08 +00 +00 +00 +ENDCHAR +STARTCHAR uniFB59 +ENCODING 64345 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +08 +08 +F7 +00 +14 +00 +08 +00 +00 +00 +ENDCHAR +STARTCHAR uniFB5A +ENCODING 64346 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +40 +81 +81 +7E +00 +14 +00 +14 +00 +00 +00 +ENDCHAR +STARTCHAR uniFB5B +ENCODING 64347 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +40 +80 +81 +7E +00 +14 +00 +14 +00 +00 +00 +ENDCHAR +STARTCHAR uniFB5C +ENCODING 64348 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +08 +04 +04 +F8 +00 +14 +00 +14 +00 +00 +00 +ENDCHAR +STARTCHAR uniFB5D +ENCODING 64349 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +08 +08 +F7 +00 +14 +00 +14 +00 +00 +00 +ENDCHAR +STARTCHAR uniFB5E +ENCODING 64350 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +08 +00 +08 +00 +40 +81 +81 +7E +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFB5F +ENCODING 64351 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +08 +00 +08 +00 +40 +80 +81 +7E +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFB60 +ENCODING 64352 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +08 +00 +08 +00 +08 +04 +04 +F8 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFB61 +ENCODING 64353 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +08 +00 +08 +00 +00 +08 +08 +F7 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFB62 +ENCODING 64354 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +14 +00 +14 +00 +40 +81 +81 +7E +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFB63 +ENCODING 64355 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +14 +00 +14 +00 +40 +80 +81 +7E +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFB64 +ENCODING 64356 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +14 +00 +14 +00 +08 +04 +04 +F8 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFB65 +ENCODING 64357 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +14 +00 +14 +00 +00 +08 +08 +F7 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFB66 +ENCODING 64358 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +10 +1C +14 +38 +00 +40 +81 +81 +7E +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFB67 +ENCODING 64359 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +10 +1C +14 +38 +00 +40 +80 +81 +7E +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFB68 +ENCODING 64360 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +10 +1C +14 +38 +00 +08 +04 +04 +F8 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFB69 +ENCODING 64361 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +10 +1C +14 +38 +00 +00 +08 +08 +F7 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFB6A +ENCODING 64362 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +04 +00 +0A +00 +06 +49 +85 +83 +7E +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFB6B +ENCODING 64363 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +04 +00 +0A +00 +06 +49 +89 +86 +7D +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFB6C +ENCODING 64364 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +08 +00 +14 +00 +0C +12 +0A +06 +FC +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFB6D +ENCODING 64365 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +08 +00 +14 +00 +0C +12 +12 +0C +F3 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFB6E +ENCODING 64366 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +0A +00 +0A +00 +06 +49 +85 +83 +7E +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFB6F +ENCODING 64367 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +0A +00 +0A +00 +06 +49 +89 +86 +7D +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFB70 +ENCODING 64368 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +14 +00 +14 +00 +0C +12 +0A +06 +FC +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFB71 +ENCODING 64369 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +14 +00 +14 +00 +0C +12 +12 +0C +F3 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFB72 +ENCODING 64370 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +70 +8F +30 +40 +88 +80 +88 +41 +3E +00 +00 +00 +ENDCHAR +STARTCHAR uniFB73 +ENCODING 64371 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +70 +8F +32 +41 +88 +80 +88 +40 +3E +00 +00 +ENDCHAR +STARTCHAR uniFB74 +ENCODING 64372 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +38 +47 +18 +E0 +00 +04 +00 +04 +00 +00 +00 +ENDCHAR +STARTCHAR uniFB75 +ENCODING 64373 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +70 +8F +32 +C1 +00 +08 +00 +08 +00 +00 +00 +ENDCHAR +STARTCHAR uniFB76 +ENCODING 64374 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +70 +8F +30 +40 +80 +94 +80 +41 +3E +00 +00 +00 +ENDCHAR +STARTCHAR uniFB77 +ENCODING 64375 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +70 +8F +32 +41 +80 +94 +80 +40 +3E +00 +00 +ENDCHAR +STARTCHAR uniFB78 +ENCODING 64376 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +38 +47 +18 +E0 +00 +00 +0A +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFB79 +ENCODING 64377 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +70 +8F +32 +C1 +00 +00 +14 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFB7A +ENCODING 64378 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +70 +8F +30 +40 +94 +80 +88 +41 +3E +00 +00 +00 +ENDCHAR +STARTCHAR uniFB7B +ENCODING 64379 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +70 +8F +32 +41 +94 +80 +88 +40 +3E +00 +00 +ENDCHAR +STARTCHAR uniFB7C +ENCODING 64380 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +38 +47 +18 +E0 +00 +0A +00 +04 +00 +00 +00 +ENDCHAR +STARTCHAR uniFB7D +ENCODING 64381 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +70 +8F +32 +C1 +00 +14 +00 +08 +00 +00 +00 +ENDCHAR +STARTCHAR uniFB7E +ENCODING 64382 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +70 +8F +30 +40 +94 +80 +94 +41 +3E +00 +00 +00 +ENDCHAR +STARTCHAR uniFB7F +ENCODING 64383 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +70 +8F +32 +41 +94 +80 +94 +40 +3E +00 +00 +ENDCHAR +STARTCHAR uniFB80 +ENCODING 64384 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +38 +47 +18 +E0 +00 +0A +00 +0A +00 +00 +00 +ENDCHAR +STARTCHAR uniFB81 +ENCODING 64385 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +70 +8F +32 +C1 +00 +14 +00 +14 +00 +00 +00 +ENDCHAR +STARTCHAR uniFB82 +ENCODING 64386 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +08 +04 +02 +42 +3C +00 +00 +14 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFB83 +ENCODING 64387 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +08 +08 +04 +46 +39 +00 +00 +14 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFB84 +ENCODING 64388 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +28 +00 +08 +04 +02 +42 +3C +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFB85 +ENCODING 64389 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +28 +00 +08 +08 +04 +46 +39 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFB86 +ENCODING 64390 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +10 +00 +28 +00 +08 +04 +02 +42 +3C +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFB87 +ENCODING 64391 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +10 +00 +28 +00 +08 +08 +04 +46 +39 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFB88 +ENCODING 64392 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +20 +38 +28 +70 +08 +04 +02 +42 +3C +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFB89 +ENCODING 64393 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +20 +38 +28 +70 +08 +08 +04 +46 +39 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFB8A +ENCODING 64394 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +08 +00 +14 +00 +00 +04 +02 +02 +04 +18 +60 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFB8B +ENCODING 64395 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +08 +00 +14 +00 +00 +04 +07 +04 +18 +60 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFB8C +ENCODING 64396 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +10 +1C +14 +38 +00 +04 +02 +02 +04 +18 +60 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFB8D +ENCODING 64397 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +10 +1C +14 +38 +00 +00 +00 +04 +07 +04 +18 +60 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFB8E +ENCODING 64398 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +01 +02 +04 +08 +44 +82 +82 +7C +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFB8F +ENCODING 64399 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +01 +02 +04 +08 +48 +84 +82 +7D +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFB90 +ENCODING 64400 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +06 +18 +20 +10 +08 +08 +F0 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFB91 +ENCODING 64401 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +06 +18 +20 +20 +10 +08 +F7 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFB92 +ENCODING 64402 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +04 +09 +12 +04 +08 +44 +82 +82 +7C +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFB93 +ENCODING 64403 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +04 +09 +12 +04 +08 +48 +84 +82 +7D +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFB94 +ENCODING 64404 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +0C +30 +46 +18 +20 +10 +08 +08 +F0 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFB95 +ENCODING 64405 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +0C +30 +46 +18 +20 +20 +10 +08 +F7 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFB96 +ENCODING 64406 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +04 +09 +12 +04 +08 +44 +82 +82 +7C +00 +10 +00 +10 +00 +00 +00 +ENDCHAR +STARTCHAR uniFB97 +ENCODING 64407 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +04 +09 +12 +04 +08 +48 +84 +82 +7D +00 +10 +00 +10 +00 +00 +00 +ENDCHAR +STARTCHAR uniFB98 +ENCODING 64408 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +0C +30 +46 +18 +20 +10 +08 +08 +F0 +00 +10 +00 +10 +00 +00 +00 +ENDCHAR +STARTCHAR uniFB99 +ENCODING 64409 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +0C +30 +46 +18 +20 +20 +10 +08 +F7 +00 +08 +00 +08 +00 +00 +00 +ENDCHAR +STARTCHAR uniFB9A +ENCODING 64410 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +A4 +09 +12 +04 +08 +44 +82 +82 +7C +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFB9B +ENCODING 64411 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +A4 +09 +12 +04 +08 +48 +84 +82 +7D +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFB9C +ENCODING 64412 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +A2 +0C +13 +0C +10 +08 +04 +04 +F8 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFB9D +ENCODING 64413 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +A2 +0C +13 +0C +10 +10 +08 +04 +FB +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFB9E +ENCODING 64414 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +41 +81 +81 +81 +42 +3C +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFB9F +ENCODING 64415 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +01 +41 +81 +81 +42 +3C +00 +00 +00 +ENDCHAR +STARTCHAR uniFBA0 +ENCODING 64416 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +10 +1C +14 +38 +00 +41 +81 +81 +81 +42 +3C +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFBA1 +ENCODING 64417 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +10 +1C +14 +38 +00 +00 +00 +01 +41 +81 +81 +42 +3C +00 +00 +00 +ENDCHAR +STARTCHAR uniFBA2 +ENCODING 64418 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +10 +1C +14 +38 +00 +08 +04 +04 +F8 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFBA3 +ENCODING 64419 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +10 +1C +14 +38 +00 +00 +08 +08 +F7 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFBA4 +ENCODING 64420 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +38 +40 +38 +40 +18 +24 +22 +22 +1C +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFBA5 +ENCODING 64421 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +70 +80 +70 +80 +10 +68 +88 +74 +03 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFBA6 +ENCODING 64422 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +18 +24 +22 +22 +1C +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFBA7 +ENCODING 64423 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +0C +13 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFBA8 +ENCODING 64424 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +10 +F0 +10 +14 +08 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFBA9 +ENCODING 64425 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +10 +F7 +08 +08 +08 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFBAA +ENCODING 64426 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +10 +38 +4C +52 +32 +3D +40 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFBAB +ENCODING 64427 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +10 +38 +4C +52 +32 +3D +40 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFBAC +ENCODING 64428 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +10 +38 +4C +52 +32 +FC +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFBAD +ENCODING 64429 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +10 +38 +4C +52 +32 +FD +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFBAE +ENCODING 64430 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +08 +14 +60 +80 +FE +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFBAF +ENCODING 64431 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +07 +18 +20 +3F +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFBB0 +ENCODING 64432 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +70 +80 +70 +80 +08 +14 +60 +80 +FE +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFBB1 +ENCODING 64433 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +1C +20 +1C +20 +00 +00 +07 +18 +20 +3F +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFBD3 +ENCODING 64467 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +10 +00 +29 +01 +19 +21 +19 +A1 +7E +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFBD4 +ENCODING 64468 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +10 +00 +2A +02 +32 +42 +32 +C6 +79 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFBD5 +ENCODING 64469 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +40 +00 +A3 +0C +10 +08 +04 +04 +F8 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFBD6 +ENCODING 64470 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +40 +00 +A3 +0C +10 +10 +08 +04 +FB +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFBD7 +ENCODING 64471 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +10 +28 +18 +10 +20 +0C +12 +0E +02 +04 +18 +60 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFBD8 +ENCODING 64472 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +10 +28 +18 +10 +20 +00 +0C +12 +0F +02 +04 +18 +60 +00 +00 +00 +ENDCHAR +STARTCHAR uniFBD9 +ENCODING 64473 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +14 +08 +00 +00 +0C +12 +0E +02 +04 +18 +60 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFBDA +ENCODING 64474 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +14 +08 +00 +00 +00 +0C +12 +0F +02 +04 +18 +60 +00 +00 +00 +ENDCHAR +STARTCHAR uniFBDB +ENCODING 64475 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +08 +08 +08 +08 +00 +0C +12 +0E +02 +04 +18 +60 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFBDC +ENCODING 64476 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +08 +08 +08 +08 +00 +00 +0C +12 +0F +02 +04 +18 +60 +00 +00 +00 +ENDCHAR +STARTCHAR uniFBDD +ENCODING 64477 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +23 +54 +33 +24 +40 +0C +12 +0E +02 +04 +18 +60 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFBDE +ENCODING 64478 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +08 +00 +14 +00 +0C +12 +0E +02 +04 +18 +60 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFBDF +ENCODING 64479 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +08 +00 +14 +00 +0C +12 +0F +02 +04 +18 +60 +00 +00 +00 +ENDCHAR +STARTCHAR uniFBE0 +ENCODING 64480 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +0C +12 +0E +02 +3C +18 +60 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFBE1 +ENCODING 64481 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +14 +08 +00 +00 +00 +0C +12 +0F +02 +3C +18 +60 +00 +00 +00 +ENDCHAR +STARTCHAR uniFBE2 +ENCODING 64482 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +08 +14 +00 +00 +0C +12 +0E +02 +04 +18 +60 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFBE3 +ENCODING 64483 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +08 +14 +00 +00 +00 +0C +12 +0F +02 +04 +18 +60 +00 +00 +00 +ENDCHAR +STARTCHAR uniFBE4 +ENCODING 64484 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +07 +08 +88 +86 +81 +81 +7E +00 +10 +00 +10 +ENDCHAR +STARTCHAR uniFBE5 +ENCODING 64485 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +07 +88 +87 +81 +7E +10 +00 +10 +ENDCHAR +STARTCHAR uniFBE6 +ENCODING 64486 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +08 +04 +04 +F8 +00 +08 +00 +08 +00 +00 +00 +ENDCHAR +STARTCHAR uniFBE7 +ENCODING 64487 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +08 +08 +F7 +00 +08 +00 +08 +00 +00 +00 +ENDCHAR +STARTCHAR uniFBE8 +ENCODING 64488 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +08 +04 +04 +F8 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFBE9 +ENCODING 64489 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +08 +08 +F7 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFBFC +ENCODING 64508 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +07 +08 +88 +86 +81 +82 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFBFD +ENCODING 64509 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +07 +88 +87 +81 +7E +00 +00 +00 +ENDCHAR +STARTCHAR uniFBFE +ENCODING 64510 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +08 +04 +04 +F8 +00 +00 +14 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFBFF +ENCODING 64511 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +08 +08 +F7 +00 +00 +14 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFC5B +ENCODING 64603 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +20 +20 +20 +20 +08 +04 +02 +42 +3C +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFC5C +ENCODING 64604 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +10 +10 +10 +10 +00 +04 +02 +02 +04 +18 +60 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFC5D +ENCODING 64605 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +10 +10 +10 +10 +00 +07 +08 +88 +86 +81 +81 +7E +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFC5E +ENCODING 64606 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +18 +24 +98 +60 +C2 +12 +92 +9C +60 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFC5F +ENCODING 64607 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +02 +92 +9C +60 +0E +70 +0E +70 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFC60 +ENCODING 64608 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +18 +60 +04 +54 +58 +20 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFC61 +ENCODING 64609 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +10 +28 +10 +60 +04 +54 +58 +20 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFC62 +ENCODING 64610 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +04 +54 +58 +20 +0C +30 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFC63 +ENCODING 64611 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +10 +10 +04 +54 +58 +20 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFC90 +ENCODING 64656 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +10 +10 +10 +10 +00 +00 +00 +00 +07 +88 +87 +81 +7E +00 +00 +00 +ENDCHAR +STARTCHAR uniFCF2 +ENCODING 64754 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +0E +F0 +02 +92 +9C +60 +00 +00 +FF +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFCF3 +ENCODING 64755 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +18 +24 +18 +60 +02 +92 +9C +60 +FF +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFCF4 +ENCODING 64756 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +02 +12 +9C +60 +0E +70 +00 +00 +FF +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFD3C +ENCODING 64828 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +10 +28 +50 +28 +08 +08 +08 +08 +07 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFD3D +ENCODING 64829 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +08 +14 +28 +14 +04 +04 +04 +04 +04 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFD3E +ENCODING 64830 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +04 +08 +10 +54 +38 +54 +10 +08 +04 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFD3F +ENCODING 64831 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +20 +10 +08 +2A +1C +2A +08 +10 +20 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFDF2 +ENCODING 65010 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +2A +14 +00 +21 +69 +A9 +69 +16 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFE50 +ENCODING 65104 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +08 +10 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFE51 +ENCODING 65105 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +10 +08 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFE52 +ENCODING 65106 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +10 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFE54 +ENCODING 65108 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +08 +00 +00 +08 +10 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFE55 +ENCODING 65109 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +10 +00 +00 +10 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFE56 +ENCODING 65110 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +18 +24 +08 +10 +00 +10 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFE57 +ENCODING 65111 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +10 +10 +10 +10 +00 +10 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFE58 +ENCODING 65112 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +3C +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFE59 +ENCODING 65113 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +08 +10 +10 +10 +10 +10 +08 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFE5A +ENCODING 65114 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +10 +08 +08 +08 +08 +08 +10 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFE5B +ENCODING 65115 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +18 +10 +10 +20 +10 +10 +18 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFE5C +ENCODING 65116 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +18 +08 +08 +04 +08 +08 +18 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFE5D +ENCODING 65117 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +18 +10 +10 +10 +10 +10 +18 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFE5E +ENCODING 65118 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +18 +08 +08 +08 +08 +08 +18 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFE5F +ENCODING 65119 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +28 +7C +28 +7C +28 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFE60 +ENCODING 65120 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +10 +28 +28 +10 +2A +24 +1A +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFE61 +ENCODING 65121 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +10 +10 +7C +38 +38 +44 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFE62 +ENCODING 65122 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +10 +10 +7C +10 +10 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFE63 +ENCODING 65123 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +3C +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFE64 +ENCODING 65124 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +08 +10 +20 +10 +08 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFE65 +ENCODING 65125 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +20 +10 +08 +10 +20 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFE66 +ENCODING 65126 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +3C +00 +3C +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFE68 +ENCODING 65128 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +20 +10 +10 +08 +08 +04 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFE69 +ENCODING 65129 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +10 +38 +54 +30 +18 +54 +38 +10 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFE6A +ENCODING 65130 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +24 +08 +08 +10 +10 +24 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFE6B +ENCODING 65131 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +38 +44 +54 +58 +40 +38 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFE70 +ENCODING 65136 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +0C +30 +0C +30 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFE71 +ENCODING 65137 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +06 +18 +60 +06 +18 +60 +00 +00 +FF +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFE72 +ENCODING 65138 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +0C +12 +CA +2C +70 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFE74 +ENCODING 65140 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +0C +30 +0C +30 +00 +00 +ENDCHAR +STARTCHAR uniFE76 +ENCODING 65142 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +0C +30 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFE77 +ENCODING 65143 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +06 +18 +60 +00 +00 +00 +00 +FF +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFE78 +ENCODING 65144 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +08 +14 +0C +08 +10 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFE79 +ENCODING 65145 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +18 +24 +14 +18 +60 +00 +00 +00 +FF +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFE7A +ENCODING 65146 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +0C +30 +00 +00 +ENDCHAR +STARTCHAR uniFE7B +ENCODING 65147 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +FF +00 +00 +06 +18 +60 +00 +00 +ENDCHAR +STARTCHAR uniFE7C +ENCODING 65148 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +0A +2A +2C +10 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFE7D +ENCODING 65149 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +02 +12 +92 +9C +60 +00 +00 +00 +FF +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFE7E +ENCODING 65150 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +18 +24 +18 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFE7F +ENCODING 65151 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +18 +24 +24 +18 +00 +00 +00 +00 +FF +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFE80 +ENCODING 65152 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +18 +24 +20 +1E +20 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFE81 +ENCODING 65153 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +02 +3C +40 +10 +10 +10 +10 +10 +10 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFE82 +ENCODING 65154 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +01 +3E +40 +08 +08 +08 +08 +08 +07 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFE83 +ENCODING 65155 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +18 +20 +1C +20 +08 +08 +08 +08 +08 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFE84 +ENCODING 65156 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +0C +10 +0E +10 +04 +04 +04 +04 +03 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFE85 +ENCODING 65157 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +1C +20 +1C +20 +0C +12 +0E +02 +04 +18 +60 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFE86 +ENCODING 65158 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +1C +20 +1C +20 +00 +0C +12 +0F +02 +04 +18 +60 +00 +00 +00 +ENDCHAR +STARTCHAR uniFE87 +ENCODING 65159 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +04 +04 +04 +04 +04 +04 +00 +0C +10 +0E +10 +00 +00 +ENDCHAR +STARTCHAR uniFE88 +ENCODING 65160 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +04 +04 +04 +04 +04 +03 +00 +0C +10 +0E +10 +00 +00 +ENDCHAR +STARTCHAR uniFE89 +ENCODING 65161 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +30 +40 +38 +40 +07 +08 +88 +86 +81 +81 +7E +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFE8A +ENCODING 65162 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +30 +40 +38 +40 +00 +00 +00 +07 +88 +87 +81 +7E +00 +00 +00 +ENDCHAR +STARTCHAR uniFE8B +ENCODING 65163 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +1C +20 +1C +20 +08 +04 +04 +F8 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFE8C +ENCODING 65164 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +1C +20 +1C +20 +00 +08 +08 +F7 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFE8D +ENCODING 65165 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +08 +08 +08 +08 +08 +08 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFE8E +ENCODING 65166 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +08 +08 +08 +08 +08 +07 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFE8F +ENCODING 65167 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +40 +81 +81 +7E +00 +00 +08 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFE90 +ENCODING 65168 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +40 +80 +81 +7E +00 +00 +08 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFE91 +ENCODING 65169 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +08 +04 +04 +F8 +00 +00 +10 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFE92 +ENCODING 65170 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +08 +08 +F7 +00 +00 +08 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFE93 +ENCODING 65171 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +28 +00 +00 +18 +24 +22 +22 +1C +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFE94 +ENCODING 65172 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +50 +00 +10 +10 +68 +88 +74 +03 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFE95 +ENCODING 65173 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +14 +40 +81 +81 +7E +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFE96 +ENCODING 65174 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +14 +00 +40 +80 +81 +7E +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFE97 +ENCODING 65175 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +14 +00 +08 +04 +04 +F8 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFE98 +ENCODING 65176 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +14 +00 +00 +08 +08 +F7 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFE99 +ENCODING 65177 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +08 +00 +14 +00 +40 +81 +81 +7E +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFE9A +ENCODING 65178 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +08 +00 +14 +00 +40 +80 +81 +7E +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFE9B +ENCODING 65179 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +08 +00 +14 +00 +08 +04 +04 +F8 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFE9C +ENCODING 65180 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +08 +00 +14 +00 +00 +08 +08 +F7 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFE9D +ENCODING 65181 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +70 +8F +30 +40 +80 +88 +80 +41 +3E +00 +00 +00 +ENDCHAR +STARTCHAR uniFE9E +ENCODING 65182 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +70 +8F +32 +41 +80 +88 +80 +40 +3E +00 +00 +ENDCHAR +STARTCHAR uniFE9F +ENCODING 65183 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +38 +47 +18 +E0 +00 +00 +10 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFEA0 +ENCODING 65184 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +70 +8F +32 +C1 +00 +00 +08 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFEA1 +ENCODING 65185 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +70 +8F +30 +40 +80 +80 +80 +41 +3E +00 +00 +00 +ENDCHAR +STARTCHAR uniFEA2 +ENCODING 65186 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +70 +8F +32 +41 +80 +80 +80 +40 +3E +00 +00 +ENDCHAR +STARTCHAR uniFEA3 +ENCODING 65187 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +38 +47 +18 +E0 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFEA4 +ENCODING 65188 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +70 +8F +32 +C1 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFEA5 +ENCODING 65189 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +20 +00 +00 +70 +8F +30 +40 +80 +80 +80 +41 +3E +00 +00 +00 +ENDCHAR +STARTCHAR uniFEA6 +ENCODING 65190 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +20 +00 +00 +70 +8F +32 +41 +80 +80 +80 +40 +3E +00 +00 +ENDCHAR +STARTCHAR uniFEA7 +ENCODING 65191 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +10 +00 +38 +47 +18 +E0 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFEA8 +ENCODING 65192 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +10 +00 +00 +70 +8F +32 +C1 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFEA9 +ENCODING 65193 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +08 +04 +02 +42 +3C +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFEAA +ENCODING 65194 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +08 +08 +04 +46 +39 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFEAB +ENCODING 65195 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +10 +00 +08 +04 +02 +42 +3C +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFEAC +ENCODING 65196 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +10 +00 +08 +08 +04 +46 +39 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFEAD +ENCODING 65197 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +04 +02 +02 +04 +18 +60 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFEAE +ENCODING 65198 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +04 +07 +04 +18 +60 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFEAF +ENCODING 65199 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +08 +00 +00 +04 +02 +02 +04 +18 +60 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFEB0 +ENCODING 65200 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +08 +00 +00 +04 +07 +04 +18 +60 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFEB1 +ENCODING 65201 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +01 +15 +88 +84 +84 +78 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFEB2 +ENCODING 65202 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +01 +15 +88 +84 +84 +78 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFEB3 +ENCODING 65203 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +01 +15 +EA +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFEB4 +ENCODING 65204 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +2A +D5 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFEB5 +ENCODING 65205 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +08 +00 +14 +00 +01 +15 +88 +84 +84 +78 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFEB6 +ENCODING 65206 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +08 +00 +14 +00 +01 +15 +88 +84 +84 +78 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFEB7 +ENCODING 65207 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +04 +00 +0A +00 +00 +01 +15 +EA +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFEB8 +ENCODING 65208 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +08 +00 +14 +00 +00 +00 +2A +D5 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFEB9 +ENCODING 65209 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +06 +09 +31 +9E +88 +88 +70 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFEBA +ENCODING 65210 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +06 +09 +31 +9E +88 +88 +70 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFEBB +ENCODING 65211 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +06 +29 +31 +DE +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFEBC +ENCODING 65212 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +06 +29 +31 +DE +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFEBD +ENCODING 65213 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +04 +00 +06 +09 +31 +9E +88 +88 +70 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFEBE +ENCODING 65214 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +04 +00 +06 +09 +31 +9E +88 +88 +70 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFEBF +ENCODING 65215 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +04 +00 +00 +06 +29 +31 +DE +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFEC0 +ENCODING 65216 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +04 +00 +00 +06 +29 +31 +DE +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFEC1 +ENCODING 65217 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +20 +20 +20 +2C +32 +A2 +7C +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFEC2 +ENCODING 65218 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +20 +20 +20 +2C +32 +A2 +7D +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFEC3 +ENCODING 65219 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +20 +20 +20 +2C +32 +22 +FC +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFEC4 +ENCODING 65220 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +20 +20 +20 +2C +32 +22 +FD +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFEC5 +ENCODING 65221 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +24 +20 +20 +2C +32 +A2 +7C +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFEC6 +ENCODING 65222 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +24 +20 +20 +2C +32 +A2 +7D +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFEC7 +ENCODING 65223 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +24 +20 +20 +2C +32 +22 +FC +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFEC8 +ENCODING 65224 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +24 +20 +20 +2C +32 +22 +FD +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFEC9 +ENCODING 65225 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +70 +80 +8C +70 +40 +80 +80 +80 +41 +3E +00 +00 +ENDCHAR +STARTCHAR uniFECA +ENCODING 65226 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +1E +22 +1C +22 +41 +80 +80 +80 +41 +3E +00 +00 +ENDCHAR +STARTCHAR uniFECB +ENCODING 65227 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +0E +10 +10 +FE +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFECC +ENCODING 65228 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +1E +22 +1C +E3 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFECD +ENCODING 65229 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +40 +00 +00 +70 +80 +8C +70 +40 +80 +80 +80 +41 +3E +00 +00 +ENDCHAR +STARTCHAR uniFECE +ENCODING 65230 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +08 +00 +00 +1E +22 +1C +22 +41 +80 +80 +80 +41 +3E +00 +00 +ENDCHAR +STARTCHAR uniFECF +ENCODING 65231 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +10 +00 +00 +0E +10 +10 +FE +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFED0 +ENCODING 65232 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +08 +00 +00 +1E +22 +1C +E3 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFED1 +ENCODING 65233 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +04 +00 +06 +49 +85 +83 +7E +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFED2 +ENCODING 65234 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +04 +00 +06 +49 +89 +86 +7D +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFED3 +ENCODING 65235 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +08 +00 +0C +12 +0A +06 +FC +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFED4 +ENCODING 65236 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +08 +00 +0C +12 +12 +0C +F3 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFED5 +ENCODING 65237 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +0A +00 +06 +09 +09 +47 +81 +81 +81 +42 +3C +00 +00 +00 +ENDCHAR +STARTCHAR uniFED6 +ENCODING 65238 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +0A +00 +00 +06 +09 +49 +87 +81 +81 +42 +3C +00 +00 +00 +ENDCHAR +STARTCHAR uniFED7 +ENCODING 65239 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +14 +00 +00 +0C +12 +0A +06 +FC +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFED8 +ENCODING 65240 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +14 +00 +00 +0C +12 +12 +0C +F3 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFED9 +ENCODING 65241 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +19 +21 +19 +21 +01 +81 +7E +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFEDA +ENCODING 65242 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +32 +42 +32 +42 +02 +86 +79 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFEDB +ENCODING 65243 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +06 +18 +20 +10 +08 +08 +F0 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFEDC +ENCODING 65244 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +06 +18 +20 +20 +10 +08 +F7 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFEDD +ENCODING 65245 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +02 +02 +02 +02 +02 +42 +82 +82 +84 +78 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFEDE +ENCODING 65246 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +02 +02 +02 +02 +02 +03 +42 +82 +82 +84 +78 +00 +00 +ENDCHAR +STARTCHAR uniFEDF +ENCODING 65247 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +08 +08 +08 +08 +08 +08 +F0 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFEE0 +ENCODING 65248 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +08 +08 +08 +08 +08 +08 +F7 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFEE1 +ENCODING 65249 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +0C +12 +12 +3C +40 +40 +40 +40 +40 +40 +00 +00 +ENDCHAR +STARTCHAR uniFEE2 +ENCODING 65250 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +08 +3C +4B +4A +44 +40 +40 +40 +00 +00 +ENDCHAR +STARTCHAR uniFEE3 +ENCODING 65251 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +0C +12 +32 +CC +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFEE4 +ENCODING 65252 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +0C +12 +32 +CD +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFEE5 +ENCODING 65253 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +08 +00 +00 +41 +81 +81 +81 +42 +3C +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFEE6 +ENCODING 65254 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +08 +01 +41 +81 +81 +42 +3C +00 +00 +00 +ENDCHAR +STARTCHAR uniFEE7 +ENCODING 65255 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +10 +00 +08 +04 +04 +F8 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFEE8 +ENCODING 65256 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +08 +00 +00 +08 +08 +F7 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFEE9 +ENCODING 65257 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +18 +24 +22 +22 +1C +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFEEA +ENCODING 65258 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +10 +10 +68 +88 +74 +03 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFEEB +ENCODING 65259 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +40 +30 +4E +49 +39 +E6 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFEEC +ENCODING 65260 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +08 +14 +24 +28 +F3 +24 +18 +0C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFEED +ENCODING 65261 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +0C +12 +0E +02 +04 +18 +60 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFEEE +ENCODING 65262 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +0C +12 +0F +02 +04 +18 +60 +00 +00 +00 +ENDCHAR +STARTCHAR uniFEEF +ENCODING 65263 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +07 +08 +88 +86 +81 +81 +7E +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFEF0 +ENCODING 65264 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +07 +88 +87 +81 +7E +00 +00 +00 +ENDCHAR +STARTCHAR uniFEF1 +ENCODING 65265 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +07 +08 +88 +86 +81 +81 +7E +00 +00 +24 +00 +ENDCHAR +STARTCHAR uniFEF2 +ENCODING 65266 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +07 +88 +87 +81 +7E +00 +24 +00 +ENDCHAR +STARTCHAR uniFEF3 +ENCODING 65267 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +08 +04 +04 +F8 +00 +00 +14 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFEF4 +ENCODING 65268 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +08 +08 +F7 +00 +00 +14 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFEF5 +ENCODING 65269 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +68 +90 +02 +22 +12 +0A +04 +0C +12 +3C +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFEF6 +ENCODING 65270 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +68 +90 +02 +32 +12 +0A +0A +0E +3D +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFEF7 +ENCODING 65271 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +60 +80 +72 +A2 +12 +0A +04 +0C +12 +3C +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFEF8 +ENCODING 65272 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +30 +40 +3A +52 +12 +0A +0A +0E +3D +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFEF9 +ENCODING 65273 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +42 +22 +12 +0A +04 +0C +12 +3C +00 +18 +20 +1C +20 +00 +ENDCHAR +STARTCHAR uniFEFA +ENCODING 65274 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +22 +12 +12 +0A +0A +0E +3D +00 +00 +18 +20 +1C +20 +00 +ENDCHAR +STARTCHAR uniFEFB +ENCODING 65275 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +42 +22 +12 +0A +04 +0C +12 +3C +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFEFC +ENCODING 65276 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +22 +12 +12 +0A +0A +0E +3D +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFEFF +ENCODING 65279 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +F1 +35 +55 +8A +E0 +06 +95 +D6 +B5 +97 +00 +EE +8A +EE +28 +E8 +ENDCHAR +STARTCHAR uniFFFD +ENCODING 65533 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +38 +7C +7C +C6 +92 +F2 +E6 +FE +E6 +7C +7C +38 +00 +00 +00 +ENDCHAR +ENDFONT